Потоки UNIX - о сне и как заставить поток работать на определенное время - PullRequest
0 голосов
/ 02 декабря 2011

В UNIX, если поток вызывает функцию сна, будет ли весь процесс не выполнять какую-либо работу в течение этого времени или только поток вызова в режиме сна не будет выполнять какую-либо работу в течение этого времени?

В многопоточной программе я хочу, чтобы поток работал в течение определенного времени, как этого добиться?

1 Ответ

1 голос
/ 02 декабря 2011

человек спит говорит:

The sleep() function suspends execution of the calling thread until either seconds seconds have elapsed
or a signal is delivered to the thread and its action is to invoke a signal-catching function or to
terminate the thread or process.  System activity may lengthen the sleep by an indeterminate amount.

This function is implemented using nanosleep(2) by pausing for seconds seconds or until a signal
occurs.  Consequently, in this implementation, sleeping has no effect on the state of process timers,
and there is no special handling for SIGALRM.

так что "только вызывающая нить".

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...