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 ...