#c #multithreading #thread-safety #pthreads
Вопрос:
Читая это: https://man7.org/linux/man-pages/man3/pthread_cancel.3.html
Мне интересно знать, может ли поток вызывать pthread_cancel
сам себя? В случае, если это законно, что произойдет и будет ли это похоже на вызов pthread_exit()
?
Примечание: На этой странице ничего не упоминается об этом интересном случае.
Комментарии:
1.
pthread_exit
немедленно завершает поток, это похоже на вызов (непоточного) процессаexit
. Вpthread_cancel
основном устанавливается флаг, который может привести к завершению потока некоторое время спустя.2. Это кажется законным; по крайней мере, в POSIX нет правил, запрещающих это. Хотя не похоже, что это было бы полезно.
3. Лучший вопрос: есть ли какие-либо обстоятельства, при которых я должен рассмотреть возможность звонка
pthread_cancel()
? Ответ: скорее всего, нет.