`pthread_cancel` в потоке вызывающего абонента?

#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() ? Ответ: скорее всего, нет.