相关疑难解决方法(0)

Unix pthreads和信号:每个线程信号处理程序

我无法让线程捕获正确的信号.

例如,

我首先开始一个主线程(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 multithreading signals pthreads

16
推荐指数
2
解决办法
1万
查看次数

通过POSIX信号终止C++ 11中的多线程应用程序

C++11在Linux平台上编写了一个简单的多线程应用程序,我希望通过发送SIGINT信号来终止服务器及其运行的线程.

显然我的服务器应用程序使用C++ 11(std::thread等)的线程支持.虽然我在C++ 11(std::signal)中找到了对信号处理的一些支持,但我找不到在多线程环境中处理信号的任何支持.

所以我的问题是 - 有没有办法如何在多线程应用程序中处理信号,C++11或者我是否必须依赖,pthreads因为我的应用程序需要处理信号?

multithreading posix signals c++11

7
推荐指数
1
解决办法
1878
查看次数

标签 统计

multithreading ×2

signals ×2

c ×1

c++11 ×1

posix ×1

pthreads ×1