2011-04-25 100 views
1

在多线程环境中,SIGCANCEL发送到线程时会发生什么?当SIGCANCEL发送到线程时会发生什么?

如果将SIGKILL发送到线程,行为会有什么不同?

+0

我不认为'SIGCANCEL'在Linux中完全支持。我知道它被POSIX所弃用。 – 2011-04-25 21:10:32

回答

0

像特拉维斯说的,SIGCANCEL已经deprecated并不存在于POSIX标准。

+0

在文件glibc-2.9/nptl/pthread_cancel.c中,我可以找到SIGCANCEL。因此我想知道功能。那么当你调用pthread_cancel()时会发生什么? – notytony 2011-04-25 22:10:32

+0

@notytony是的,它似乎仍然存在于glibc 2.9中,但如果你看看内核手册页,[它不在](http://www.kernel.org/doc/man-pages/online/pages/ man7/signal.7.html)。我没有pthread的经验,但它似乎不是你的标准信号。我读取的一小部分文档表明它用于向与调用者处于同一进程的线程发送信号。您可能想将pthread_cancel与[pthread_kill]进行比较(http://glibc.sourcearchive.com/documentation/2.9-9ubuntu2/pthread__kill_8c-source.html)。 – voithos 2011-04-26 04:22:54

0

SIGCANCEL目前在glibc并行线程执行被定义为__SIGRTMIN使用(内部)。

如果pthread_cancel()被调用的取消类型设置为异步的线程,它会通过通过tgkill()发送。

相反,这可能意味着接收到__SIGRTMIN的线程的行为就好像它被异步取消一样。 (我没有测试过)

相关问题