поведение во сне в pthread

У меня есть вопрос относительно использования sleep() в потоке, созданном с помощью pthread_create() на основной линии (ванильный) Linux (kernel 2.6.18)

Предположим, я создаю 2 потока, коды выполнения которых следующие:

thread1(void *){
 while (1) {
    sleep(5);
 }
}

thread2(void *){
 while (1) {
    sleep(9);
 }
}

Мой вопрос заключается в том, будет ли sleep() в одном потоке мешать sleep() в другом потоке, например, если thread1 просыпается из sleep(), будет ли thread2 также разбужено преждевременно?

Я попробовал свой код на CentOS 5.4, и кажется, что sleep() в каждом потоке не зависит от другого.

Однако я не уверен, что эта независимость гарантирована. Подчеркивающая реализация sleep() должна полагаться на некоторые сигналы, скажем, SIGALARM, и я не знаю, хорошо ли определено, какой поток получает сигнал, когда сигнал поступает.


person user2616158    schedule 24.07.2013    source источник
comment
возможный дубликат pthread sleep linux   -  person Carl Norum    schedule 25.07.2013
comment
ОТ: Должно быть void * threadX(void *); кстати.   -  person alk    schedule 30.07.2013