C++多线程(含传递参数)

来源:互联网 发布:mac dock 切换屏幕 编辑:程序博客网 时间:2024/06/04 19:15
#define _CRT_SECURE_NO_WARNINGS#include<string.h>#include <iostream>#include<vector>#include<thread>#include<mutex>#include<ctime>using namespace std;int my_num2 = 100;std::mutex mutex1;void sleep(){int i = 10000000;while (i < 0)i--;}class my_thread{public:void addThread();void myThreadA(char name);};void my_thread::addThread(){std::thread t1(&my_thread::myThreadA, this, 'A');//创建一个分支线程,回调到myThreadA函数里std::thread t2(&my_thread::myThreadA, this, 'B');t1.join();t2.join();printf("hello addThread\n");}void my_thread::myThreadA(char name){while (true){mutex1.lock();  //加锁 if (my_num2 > 0){sleep();printf("%c --------------- %d\n", name, my_num2--);//输出售票,每次减1 mutex1.unlock();}else{my_num2 = 20;//发现问题-------------------------mutex1.unlock();break;}}}int main(){my_thread a;a.addThread();//system("pause");return 0;}

结果: