Заставьте поток спать сначала, прежде чем он запустится - PullRequest
0 голосов
/ 25 мая 2011

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

Ответы [ 2 ]

1 голос
/ 25 мая 2011

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

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

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

get-lock
release-lock

и избежать условиявещь.

0 голосов
/ 25 мая 2011

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

Rgds, Martin.

...