Имам въпрос относно използването на 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