Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.04.06;
Скачать: [xml.tar.bz2];

Вниз

Как правильно поставить процесс на паузу?   Найти похожие ветки 

 
Вова   (2013-06-27 00:30) [0]

Есть несколько процессов. Одни крутятся непрерывно, а прочие после одной итерации нужно остановить до следующего вызова (чтобы не жрали процессорное время). причем несколько процессов одновременно могут требовать запустить какой то третий процесс.

пробовал использовать suspend resume - но resume никакого эффекта на остановленный процесс не оказывает.

пробовал в процессе после отработки кода вызывать suspend ( в Execute), а в другом потоке, когда нужно запустить снова остановленный процесс  вызывать MyProcess.suspend на что получаю ошибку о том, что приемник отказался принять  сигнал (156). Кроме того вполне вероятна ситуация когда несколько процессов одновременно попытаются оживить третий. Но и вызывать MyProcess.suspend  внутри мьютекса тоже вроде как нельзя, т.к. это гарантированно повесит процесс. Можно было бы дать остановленному процессу подержать мъютекс захваченый в другом процессе(который его запускает переодически). Но как тогда этот мьютекс отпустить третьим процессом?)

Единственное что приходит в голову, что пока не зовут в цикле крутить слип, но все равно процесс будет мучать процессор, а большой период слипа сильно замедлит время реакции.

Вообщем никак не пойму как же сие реализовать.


 
Вова   (2013-06-27 00:46) [1]

Короче если вызвать suspend и им остановить процесс, то он уже никак обратно не стартуется (


 
bems ©   (2013-06-27 01:06) [2]

так процессы или потоки?
кажется второе, тогда используй какой-то из WaitForХХХ


 
Вова   (2013-06-27 01:35) [3]

ну да второе

а что он дает WaitFor? мне он давал только зависание ) т.к. в Execute бесконечный цикл, а если код в Execute закончить, то он больше не перезапускается ( А waitFor отвиснет только когда Execute дойдет до конца.


 
Вова   (2013-06-27 02:00) [4]

вообще это глюк какой то или я что то неправильно делаю? почему resume не перезапускает Execute ни в случае если она закончена, ни в случае если она suspended = true;


 
brother ©   (2013-06-27 03:53) [5]

куча вопросов и ни одной строчки кода...


 
MBo ©   (2013-06-27 07:52) [6]

>WaitFor?

WaitForSingleObject, WaitForMultipleObjects


 
Труп Васи Доброго ©   (2013-06-27 09:21) [7]

Такое ощущение, что человек не слышал про события. Зачем "крутить процесс", если логичнее запускать его при необходимости, когда произошло соответствующее событие? Если не так, то поясни подробнее, чем таким необходимым твои "процессы" занимаются.


 
Труп Васи Доброго ©   (2013-06-27 09:22) [8]

Такое ощущение, что человек не слышал про события. Зачем "крутить процесс", если логичнее запускать его при необходимости, когда произошло соответствующее событие? Если не так, то поясни подробнее, чем таким необходимым твои "процессы" занимаются.


 
sniknik ©   (2013-06-27 09:34) [9]

> почему resume не перезапускает Execute ни в случае если она закончена, ни в случае если она suspended = true;
она не для перезапуска, а для восстановления приостановленной работы.

p.s. у тебя ошибка в программе... даже не в том что не получается, о чем спрашиваешь, а в логике работы с потоками.


 
Вова   (2013-06-27 15:02) [10]


> Такое ощущение, что человек не слышал про события. Зачем
> "крутить процесс", если логичнее запускать его при необходимости,
>  когда произошло соответствующее событие? Если не так, то
> поясни подробнее, чем таким необходимым твои "процессы"
> занимаются.


у меня есть объекты класса к которым очень часто идет обращение, ради него то я и затеял это  все (сделал его tThread) и вот он крутится постоянно и к нему идут запросы постоянно. Т.е. задача сделать так чтобы клиент который запрашивает данные не ждал пока этот объект чего то родит, а просто забирал результат и шел дальше, а процесс раз в секунду обновляет результат.

Но есть точно такие же объекты того же класса, которые не так сильно востребованны во первых, и очень быстро отрабатывают во вторых,  в принципе я бы их даже в основном потоке бы мог отрабатывать, но, что мне тогда делать копию класса потока? поэтому я пытаюсь их тоже искать в отдельном потоке, но чтобы не грузили процессор только по вызову. Да и с другой стороны так больше гибкости, если какой то объект начинает получать много запросов, то можно его перевести на постоянный режим работы.

ну а то что я там что то не слышал ) так это раздел для начинающих - я много чего не слышал )


 
Вова   (2013-06-27 15:05) [11]

тьфу, не процесс, а поток )


 
sniknik ©   (2013-06-27 16:00) [12]

> но, что мне тогда делать копию класса потока?
зачем копию... в потоках такой же код как и вне его, вызвать можно и как обычную регулярную процедуру.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2014.04.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.001 c
11-1235303269
Dy1
2009-02-22 14:47
2014.04.06
глючный KOLAdd


15-1381563801
Тело Света
2013-10-12 11:43
2014.04.06
Маршрут


2-1371967597
Aleks
2013-06-23 10:06
2014.04.06
проблемы с Xml


15-1381571203
RDen
2013-10-12 13:46
2014.04.06
боян - выбор конфигурации компа


15-1378900706
Серёга
2013-09-11 15:58
2014.04.06
О чём "говорят" цифры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский