weixin_47130646
2021-01-24 22:31C++多线程遇到的入门级别bug
#include <iostream>
#include <mutex>
#include <string>
#include <thread>
using namespace std;
std::mutex mu;
void share_print(string msg, int id)
{
mu.lock();
cout << msg << " " << id << endl;
mu.unlock();
}
void func_1()
{
for (int i = 0; i > -100; i--)
share_print("From func_1", i);
}
int main()
{
thread t1(func_1);
for (int i = 0; i < 100; i++)
share_print("From main", i);
t1.join();
}
代码如上,得到的结果如下,按照我的理解,主线程和t1线程分别调用cout函数,但是因为加了mutex锁,这个不应该是主线程和t1线程轮流输出吗,为什么会没有规律呢?谢谢了!!
- 点赞
- 回答
- 收藏
- 复制链接分享
2条回答
为你推荐
- C++多线程输入输出为什么出现异常?
- c++
- 1个回答
- C++的string头文件有时在使用时会遇到一些罕见的bug,这些bug是什么?
- c++
- 2个回答
- java多线程并发访问sqlite数据库如何同步和加锁
- java
- sqlite
- 多线程
- 并发
- 6个回答
- C++多线程中使用函数的问题
- 调试
- c++
- 多线程
- 5个回答
- c++多线程问题detach和join
- c++
- 多线程
- 并发
- 4个回答
换一换