MFC_互斥对象_打印字符串_2线程_同步
2017-07-07 17:45
288 查看
#include <afxmt.h> #include <stdio.h> DWORD WINAPI myfun1(LPVOID lpParameter);//声明线程函数 DWORD WINAPI myfun2(LPVOID lpParameter); CMutex hmutex(NULL,FALSE,NULL); //定义全局互斥对象 int a=0; //定义全局变量a int main() { HANDLE h1,h2; //定义线程句柄 h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL); //创建线程1 printf("使用CMutex 类实现线程同步\r\n"); printf("线程1开始运行!\r\n"); h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL); //创建线程2 printf("线程2开始运行!\r\n"); ::CloseHandle(h1); //关闭线程句柄对象 ::CloseHandle(h2); ::Sleep(100000); //程序睡眠10秒 return 0; } DWORD WINAPI myfun1(LPVOID lpParameter) //线程函数1 { while(1) { hmutex.Lock(INFINITE); //锁定互斥对象 if(a<10000) { a+=1; //变量自加 ::Sleep(1000); //线程睡眠1秒 printf("线程1:%d\r\n",a); hmutex.Unlock(); //释放互斥对象 } else { hmutex.Unlock(); //释放互斥对象 break; //跳出循环 } } return 0; } DWORD WINAPI myfun2(LPVOID lpParameter) //线程函数2 { while(1) { hmutex.Lock(INFINITE); //锁定互斥对象 if(a<10000) { a+=1; ::Sleep(1000); printf("线程2:%d\r\n",a); //输出变量 hmutex.Unlock(); //释放互斥对象 } else { hmutex.Unlock(); //释放互斥对象 break; //跳出循环 } } return 0; //线程正常退出 }
相关文章推荐
- 互斥对象_打印字符串_2线程_同步
- MFC_事件对象_打印字符串_2线程_同步
- 事件对象_打印字符串_2线程_同步
- 孙鑫MFC第十五讲 线程和互斥对象等
- (C#) Lock - 将对象上锁,互斥多个线程,使同步。
- MFC_临界区_打印字符串_2线程
- Windows编程-- 线程和内核对象的同步 - 互斥对象内核对象
- 事件对象 互斥对象对 线程的同步
- 线程的同步互斥之事件对象(Event)
- 创建互斥对象同步线程
- 第九章 线程与内核对象的同步(2)
- 利用内核对象同步线程
- 第九章 线程与内核对象的同步(4)
- 第九章 线程与内核对象的同步(3)
- java Thread:线程同步之互斥(1)
- Windows高级编程之线程与内核对象的同步
- 线程与内核对象的同步——Windows核心编程学习手札之九
- MFC线程独立对象管理机制分析
- 第九章 线程与内核对象的同步(6)
- 最近的一个作业(用c++模拟线程的同步和互斥)