C++多线程编程例子 Demo 关键代码段 临界区 实现线程同步
2012-08-24 15:36
731 查看
DWORD WINAPI Fun1Proc(LPVOID lParam); DWORD WINAPI Fun2Proc(LPVOID lParam); int balance = 110;//账户余额[最少10元保底] CRITICAL_SECTION critical;//代码临界区 /* 运用关键代码端[临界区]实现线程间同步 */ void main() { InitializeCriticalSection(&critical); HANDLE hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);//线程1存钱[每次存100元,账户最多110元] HANDLE hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);//线程2取钱[每次取100元,账户至少留10元] CloseHandle(hThread1); CloseHandle(hThread2); Sleep(5000); DeleteCriticalSection(&critical); } DWORD WINAPI Fun1Proc(LPVOID lParam) { int i = 50; while (i-- > 0) { EnterCriticalSection(&critical); if (balance 0) { EnterCriticalSection(&critical); if (balance-100<10) { printf("线程2:\t账户余额:%d元,余额不足,线程2不能取款,等待线程1存款...\n",balance); LeaveCriticalSection(&critical); continue; } printf("线程2:\t账户余额%d元,线程2取款100元\n",balance); balance-=100; LeaveCriticalSection(&critical); } return 0; }
相关文章推荐
- 多线程编程Demo[关键代码段[临界区]实现线程同步]
- windows多线程系列004_利用关键代码段实现线程同步
- Windows多线程程序设计之线程同步分析(结合临界区(关键代码段))
- 多线程编程Demo[利用事件对象实现线程同步]
- 以关键代码段为例子详细讲解多线程中的同步技术
- C++多线程编程同步技术剖析:临界区,时间,信号量,互斥量
- Windows下C++实现多线程之线程同步
- C#中的多线程编程原理与实现例子
- 多线程编程--5种方法实现线程同步
- Java的Socket通信----通过 Socket 实现 TCP 编程之多线程demo(2)
- 多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来实现线程同步
- 通过例子学设计模式之--单例模式以及多线程下说明(C++实现)
- 多线程编程--5种方法实现线程同步
- C++进阶—>互斥量:Event控制:多线程实现生产者-消费者例子
- 多线程实现线程同步~~临界区对象
- Windows编程-- 用户方式中线程的同步---关键代码段(临界区)
- 利用关键代码段实现线程同步
- 多线程编程--5种方法实现线程同步
- linux下C/C++网络编程基本:socket实现tcp和udp的例子
- Delphi多线程的OnTerminate属性(附加一个关于临界区线程同步的例子)