Заставьте Thread спать перед тем, как он запустится

Как я могу заставить свой поток спать сначала, прежде чем он запустится? Я знаю, как заставить сон работать, однако всякий раз, когда моя программа запускается, поток немедленно запускается. Я хочу, чтобы он ЖДАЛ, как только он будет создан, чтобы начать работу. (Я использую обработчики)


person Hani Honey    schedule 24.05.2011    source источник
comment
Какая ОС? Какой язык программирования? Вы дали очень мало информации для продолжения. Если вам нужны ответы, предоставьте подробную информацию о том, в чем вы просите о помощи - это даст вам гораздо более качественные ответы намного быстрее (и с меньшим количеством отрицательных голосов за плохие вопросы).   -  person Ken White    schedule 25.05.2011


Ответы (2)


Вы не можете контролировать, когда потоки запланированы. Если вы хотите, чтобы он заснул, сделайте так, чтобы первый оператор в подпрограмме потока выполнял ожидание условия или что-то в этом роде, и когда вы будете готовы, вы можете транслировать это условие. В псевдокоде:

get-lock
if (we-are-still-supposed-to-sleep)
  pthread_cond_wait()
release-lock

Я полагаю, вы могли бы сделать так, чтобы родитель удерживал блокировку при создании детей, а затем все, что им нужно было сделать, это:

get-lock
release-lock

и во избежание состояние было использовано.

person Seth Robertson    schedule 24.05.2011

Какая ОС? Windoze позволяет создавать потоки в приостановленном состоянии. Когда вы загрузили поля потока в ctor, вы можете возобновить поток. В противном случае передайте некоторый синхронизирующий объект в параметре запуска потока, чтобы новый поток ждал.

С уважением, Мартин.

person Martin James    schedule 25.05.2011