线程,Mutex简单用法
来源:互联网 发布:java模拟器安卓版5.1 编辑:程序博客网 时间:2024/06/02 15:53
1.很挫的做法,实现线程按顺序干活
define a controller obj
class Controler{public:Controler(): order_(0){mutex_ = CreateMutex(NULL, FALSE, NULL);}Controler(const Controler& assign_obj){this->mutex_ = assign_obj.mutex_;this->order_ = assign_obj.order_;}~Controler(){CloseHandle(mutex_);}Controler& operator = (const Controler& assign_obj){this->mutex_ = assign_obj.mutex_;this->order_ = assign_obj.order_;return *this;}public:void GetCurrentOrder(int& res){DWORD d = WaitForSingleObject(mutex_, INFINITE);res = order_;ReleaseMutex(mutex_);}void SetCurrentOrder(int new_order){DWORD d = WaitForSingleObject(mutex_, INFINITE);order_ = new_order;ReleaseMutex(mutex_);}private:HANDLEmutex_;intorder_;};typedef struct target{int target_id;Controler* controler;} tagMsg;
DWORD WINAPI ThreadProc(LPVOID lpParam){tagMsg* msg = (tagMsg*)lpParam;Controler* controler = msg->controler;int res = -1;controler->GetCurrentOrder(res);printf("----->>> raining data , current order is %d , target id is %d <<<-------\n", res, msg->target_id);while (true){controler->GetCurrentOrder(res);if (res == msg->target_id){break;}Sleep(30);}int new_order = res+1;printf("-----*** congratulations young man , the new order is %d ***-------\n", new_order);controler->SetCurrentOrder(new_order);return 0;}test code:
const int max_thread = 30;LPDWORD thread_id[max_thread];HANDLE handle[max_thread];tagMsg para[max_thread];std::shared_ptr<Controler> wangyl(new Controler());for (int i = 0; i < max_thread; ++i){thread_id[i] = nullptr;para[i].target_id = i;para[i].controler = wangyl.get();handle[i] = CreateThread(NULL, 0, ThreadProc, (LPVOID)¶[i], 0, thread_id[i]);}WaitForMultipleObjects(max_thread, handle, TRUE, INFINITE);for (int i = 0; i < max_thread; ++i){CloseHandle(handle[i]);}result:
0 0
- 线程,Mutex简单用法
- Mutex用法
- Android中线程同步之Mutex与Condtion的用法
- Android中线程同步之Mutex与Condtion的用法
- Android中线程同步之Mutex与Condtion的用法
- Android中线程同步之Mutex与Condtion的用法
- 线程同步:Mutex
- mutex 互斥锁线程控制
- mutex 互斥锁线程控制
- 线程-互斥量mutex
- 同步线程—Mutex
- 线程同步之MUTEX
- 线程(五)mutex
- 线程同步 mutex
- 线程同步---互斥量mutex
- 线程同步--互斥量Mutex
- mutex用法和例子
- pthread mutex用法
- C++学习日记
- 使用turbo C 绘制金刚石图案
- 前端解决跨域问题的8种方案(最新最全)
- 抽象和类
- MyEclipse快捷键大全
- 线程,Mutex简单用法
- IMX6Q上移植AR3K蓝牙驱动
- maven2—maven常用构建命令
- Data Structures
- 我的焦虑:关于科技、就业和教育
- 数据结构--双向循环链表--插入
- 广告倒计时,dispatch_source_t的理解
- linux网络协议栈-socket
- YII2缓存