Автор Гілка: завершення потоку при блокуваннi  (Прочитано 2026 раз)

Відсутній @masta

  • Новачок
  • *
  • дописів: 3
  • Карма: +0/-0
  • I Love YaBB 2!
яким чином треба завершити поток, що заблокований блокуючою функцiею?
наприклад read, очикування семафору та подiбних.
Потоки створуются з параметрами PTHREAD_CREATE_DETACHED, PTHREAD_EXPLICIT_SCHED, SCHED_OTHER. phread_kill(..,SIGINT) вбивае головний процес, а на виклик pthread_exit система матюгается та програма теж виходит з помилкою

Відсутній @masta

  • Новачок
  • *
  • дописів: 3
  • Карма: +0/-0
  • I Love YaBB 2!
Re: завершення потоку при блокуваннi
« Відповідей #1 : 2007-02-05 12:07:42 »
тема закрита.
блокуючi функцii е cancellation point, тобто треба писати наступним чином функцii потоку що очикують
while(1){
  ....
  block_function(); // read, sem_wait(), pthread_mutex_lock etc
  pthread_testcancel();
  ....
}

pthread_cancel завершуе нитку, що знаходится в cancellation point (майже всi функцii що очикують)