Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 多线程应用程序经常挂起,信号为1_C++_Multithreading_Signals_Posix - Fatal编程技术网

C++ 多线程应用程序经常挂起,信号为1

C++ 多线程应用程序经常挂起,信号为1,c++,multithreading,signals,posix,C++,Multithreading,Signals,Posix,我有一个使用pthreads的应用程序,C++11之前的版本正在使用中。我们为不同的目的分配了几个工作线程,任务通过共享的循环任务数据池以生产者-消费者的方式分布。Posix信号量已用于在等待/通知模式下进行线程间同步,以及对共享数据进行互斥锁,以确保相互排除 最近,注意到一个奇怪的问题,即接收到信号1时,程序似乎挂起了大量数据。信号1基本上是SIGHUP,即挂断,该信号通常用于报告用户的终端断开,可能是因为网络或电话连接中断 这可能是因为父终端超时导致的吗?如果是这样,nohup能帮上忙吗 这

我有一个使用pthreads的应用程序,C++11之前的版本正在使用中。我们为不同的目的分配了几个工作线程,任务通过共享的循环任务数据池以生产者-消费者的方式分布。Posix信号量已用于在等待/通知模式下进行线程间同步,以及对共享数据进行互斥锁,以确保相互排除

最近,注意到一个奇怪的问题,即接收到信号1时,程序似乎挂起了大量数据。信号1基本上是SIGHUP,即挂断,该信号通常用于报告用户的终端断开,可能是因为网络或电话连接中断

这可能是因为父终端超时导致的吗?如果是这样,nohup能帮上忙吗

这种情况仅适用于大数据量(小数据量时没有注意到),并且应用程序是从solaris终端(telnet会话)的命令行运行的


想法,欢迎。

多线程和C++98是相互排斥的。或者至少应该是这样。我无法确定代码是否真的有效,或者我只是运气好。对不起,我的意思是在C++11之前,editedI使用posix线程。C++11引入了therad作为语言的一部分,但在使用posix之前,我指的是posix,因此使用pthread创建了线程_create@nwp“在C++11之前没有多线程。”真的吗?我知道很多多线程应用程序是在C++11之前开发的,它们使用PThreads、Solaris线程或任何数量的其他线程解决方案。在那一点上,多线程并不是语言标准的一部分,但如果说没有多线程这样的东西,那就太夸张了……@nwp“不保证它确实有效”是什么意思?如果你认为你对C++11有一个保证,那只是因为C++11标准这么说,平台说它支持C++11,而你相信这一点。没有C++11,您也可以得到同样的保证——平台说它支持线程,您相信它。“在C++之前使用C++ 11,在某些点上创建随机bug。”除非你的平台支持一些标准,提供足够的保证,比如POSIX线程。