LINUX.ORG.RU

Вопрос про потоки и семафоры


0

0

На сколько корректтно прибивать поток, если он уснул на семафоре и за ним еще несколько потоков.

Потоки ASYNCRONOUS Прибиваю при помощи pthread_cancel, pthread_join

Думается мне, что это криво ... Что скажут на это продвинутые линуксоводы? Какие будут советы ? Всем спасибо ...

anonymous

а поподробнее можно? вроде всё чики-пуки, man pthread_cancel:

       When a thread eventually honors a cancellation request, it
       performs as  if  pthread_exit(PTHREAD_CANCELED)  has  been
       called at that point: all cleanup handlers are executed in
       reverse order, finalization functions for  thread-specific
       data  are  called,  and finally the thread stops executing

что касается атомарности убивства thread-ов по отношению к логике
семафоров, тут синхронизация нужна, чтобы ликвидировать race condition если семафор успеет мигнуть до начала этой логики в cleanup handler-е. В чём кривизна-то, в этом что ли?

anonymous
()

Наверное лучше заставить освободить мьютекс\семафор\память убиваемой поток, с помощью pthread_cleanup_push()

OxiD ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.