|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.04.2012, 09:38 | #1 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 130
|
как заставить функцию ждать?
нам задали сделать условный макет обработки потоков ПИСАТЕЛЬ-ЧИТАТЕЛЬ, где каждый из них может писать или читать разное колличество потоков.вопрос в том что в функции где идет вычитание нужно заставить ее ЖДАТЬ если, допустим блокирующая переменная ровна нулю, пока это не представиться возможным
Код:
|
15.04.2012, 09:58 | #2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Код:
Может так: Код:
Если помог, проси поставить минус. Будь оригинален!
|
15.04.2012, 15:51 | #3 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 130
|
спасибо я попробую таким путем но не уверен что так будет правильно.а блокирующая переменная это переменная открывающая и закрывающая вход процесса в обработку))может как то не правильно сказал но суть та же))еще раз спасибо!
|
15.04.2012, 19:53 | #4 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Что-то сразу до меня не дошло. Все гораздо проще.
сделайте глобальную переменную my_simafor:boolean, которая будет принимать значение 1, если что-то ещё не прочитано, и 0, если прочитано. а в функции function p(var x:integer):Integer; в самом начале запишите if my_simafor then exit;
Если помог, проси поставить минус. Будь оригинален!
|
15.04.2012, 20:44 | #5 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 130
|
я несколько изменил код и теперь обрабатывает не по одному а по 50 и вроде все правильно
Код:
|
15.04.2012, 20:52 | #6 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 130
|
Код:
|
15.04.2012, 20:57 | #7 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 130
|
кажется понял.нужно не по 50 писать а столько сколько у нас свободных ячеек empty. потом читать при empty=0 освобождая на каждое место))точно!нужно было предусмотреть то что у нас может не хватить памяти на все процессы и организовать поочередные выполненяи ВСЕХ процессов!!! спасибо!
Код:
Последний раз редактировалось phasha; 15.04.2012 в 21:13. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заставить перестать работать функцию ЕСЛИ? | MyTHblu | Microsoft Office Excel | 2 | 12.04.2012 14:13 |
как не ждать окончания процедуры(функции)? | Кольша | Общие вопросы Delphi | 14 | 02.02.2012 16:49 |
как заставить функцию выполняться при нажатой кнопке мыши | Arassir | JavaScript, Ajax | 3 | 02.11.2011 17:44 |
Как передать указатель на функцию в функцию | WIN32APIist | Общие вопросы C/C++ | 1 | 27.01.2011 10:35 |
Подскажите, как в консольном приложении заставить программу ждать нажатия клавиши(си)) | Александр Елис | Помощь студентам | 2 | 19.09.2009 19:38 |