C++ 增压条件变量SIGABRT
以下是我的主要节目C++ 增压条件变量SIGABRT,c++,condition-variable,C++,Condition Variable,以下是我的主要节目 #include<csignal> #include<iostream> #include<string> void signalHandler(int signum) { std::cout<<"SigNum"<<signum; exit(signum); } int main() { signal(SIGABRT, signalHandler); signal(SIGINT, signalH
#include<csignal>
#include<iostream>
#include<string>
void signalHandler(int signum)
{
std::cout<<"SigNum"<<signum;
exit(signum);
}
int main()
{
signal(SIGABRT, signalHandler);
signal(SIGINT, signalHandler);
signal(SIGSEGV, signalHandler);
Context context;
//Mutiple threads set up and working with cclContext member functions
//and joined to main thread
raise(SIGINT);
}
#包括
#包括
#包括
无效信号处理器(int signum)
{
std::COUT代码不可编译。在发出sigint信号之前是否连接所有线程?是的,它们都已连接到主线程
class Context
{
private:
std::queue<Data> _queue;
mutable boost::mutex _mutex;
boost::condition_variable _conditionVariable;
public:
void push(Data const& data)
{
boost::mutex::scoped_lock lock(_mutex);
_queue.push(data);
lock.unlock();
_conditionVariable.notify_one();
}
void wait_and_pop(Data& poppedValue)
{
boost::mutex::scoped_lock lock(_mutex);
while(_queue.empty())
{
_conditionVariable.wait(lock);
}
poppedValue = _queue.front();
_queue.pop();
}
};
#0 0x00007ffff4958625 in raise () from /lib64/libc.so.6
#1 0x00007ffff4959e05 in abort () from /lib64/libc.so.6
#2 0x00007ffff495174e in __assert_fail_base () from /lib64/libc.so.6
#3 0x00007ffff4951810 in __assert_fail () from /lib64/libc.so.6
#4 0x0000000000b61409 in boost::condition_variable::~condition_variable (this=0x19f62f0,__in_chrg=<value optimized out>) at ...
/usr/local/include/boost/thread/pthread/condition_variable_fwd.hpp:52
#5 0x0000000000b9eb3b in UT::CclContext::~CclContext (this=0x19f6220, __in_chrg=<value optimized out>) at ...