поведение при заспиване в 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
OT: Трябва да е void * threadX(void *); между другото.   -  person alk    schedule 30.07.2013