我无法让线程捕获正确的信号.
例如,
我首先开始一个主线程(tid 1).
然后,它使用设置SIGUSR1函数1()的信号处理程序signal(2).
主线程使用tid 2创建一个新线程.
在螺纹2,I寄存器的信号处理程序SIGUSR1,以function2()使用signal(2).
然后,线程1创建一个线程3(tid 3).
从线程3,我pthread_kill(1, SIGUSR1)用来向线程1发送信号.
然而,function2()被召唤,而不是function1().
是出于这种行为,还是需要更改以使这些信号处理程序工作?
编辑:我已经做了一些调试,结果发现信号IS被发送到线程1,但是function2()由于某种原因从线程1调用.这有解决方法吗?
我C++11在Linux平台上编写了一个简单的多线程应用程序,我希望通过发送SIGINT信号来终止服务器及其运行的线程.
显然我的服务器应用程序使用C++ 11(std::thread等)的线程支持.虽然我在C++ 11(std::signal)中找到了对信号处理的一些支持,但我找不到在多线程环境中处理信号的任何支持.
所以我的问题是 - 有没有办法如何在多线程应用程序中处理信号,C++11或者我是否必须依赖,pthreads因为我的应用程序需要处理信号?