У меня есть вопрос относительно использования 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
, и я не знаю, хорошо ли определено, какой поток получает сигнал, когда сигнал поступает.
void * threadX(void *);
кстати. - person alk   schedule 30.07.2013