SIGABRT 在临界区模拟 C++ 代码
Posted
技术标签:
【中文标题】SIGABRT 在临界区模拟 C++ 代码【英文标题】:SIGABRT in critical section simulation C++ code 【发布时间】:2021-03-16 05:57:11 【问题描述】:我是线程新手,我正在尝试在此代码中模拟临界区竞争条件问题。
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
using namespace std::chrono;
int x = 20;
void increment()
++x;
void decrement()
--x;
int main()
thread t1(increment);
thread t2(decrement);
cout << x;
return 0;
但是,此代码以 SIGABRT 终止。 在没有活动异常的情况下调用终止 21 为什么我在这段代码中得到 SIGABRT?
【问题讨论】:
这能回答你的问题吗? C++ terminate called without an active exception 【参考方案1】:您必须为线程调用 join 才能正确终止它们
t1.join();
t2.join();
【讨论】:
以上是关于SIGABRT 在临界区模拟 C++ 代码的主要内容,如果未能解决你的问题,请参考以下文章