多线程编程Demo[利用互斥对象实现线程间同步]
2011-06-15 12:14
681 查看
/* 本实例示范使用互斥对象实现线程间同步[互斥对象属于内核对象 */ /* 它可以实现在不同的进程的不同线程间的同步, */ /* 可以将本exe程序复制不同名字的文件然后运行, */ /* 会发现即使重命名文件仍然不能同时运行多个exe] */ #include <stdio.h> #include <windows.h> DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data ); DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data ); HANDLE hMutex = NULL; int tickets = 100; void main() { HANDLE hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); HANDLE hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL); hMutex = CreateMutex(NULL,false,"multiThread"); if (hMutex && ERROR_ALREADY_EXISTS==GetLastError()) { printf("only one instance can running/n"); return; } Sleep(5000); CloseHandle(hThread1); CloseHandle(hThread2); CloseHandle(hMutex); } DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data ) { while (TRUE) { WaitForSingleObject(hMutex,INFINITE); if (tickets==0) { break; } Sleep(1); printf("Thread1 sell ticket: %d/n",tickets--); ReleaseMutex(hMutex); } return 0; } DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data ) { while (tickets>0) { WaitForSingleObject(hMutex,INFINITE); if (tickets==0) { break; } Sleep(1); printf("Thread2 sell ticket: %d/n",tickets--); ReleaseMutex(hMutex); } return 0; }
相关文章推荐
- 多线程编程13-----Exchanger同步工具类实现两线程数据交换
- 多线程编程Demo[利用事件对象实现线程同步]
- Linux多线程编程之线程结合互斥锁实现同步
- 关于网宿厦门研发中心笔试的一道PV操作题:利用java中的多线程实现生产者与消费者的同步问题
- 多线程编程之——线程的同步
- 多线程编程之四――线程的同步
- Delphi中多线程用Synchronize实现VCL数据同步显示 解决在线程中操作控件出现问题
- C#中利用委托实现多线程跨线程操作
- VC中利用多线程实现线程间通信
- 用delegate实现.NET应用程序的同步函数的异步调用-.NET多线程编程实践之一
- 多线程编程之四——线程的同步
- 多线程编程之四——线程的同步
- Java知识点整理:第十四章:java多线程编程、创建一个线程、异步与同步、java反射、类加载
- Java多线程编程总结笔记——六线程的同步与锁
- 用delegate实现.NET应用程序的同步函数的异步调用-.NET多线程编程实践之一
- MFC多线程编程之四——线程的同步
- 多线程编程之四——线程的同步
- VC中利用多线程技术实现线程之间的通信(三)---线程之间的同步
- Visual C++利用互斥量同步线程实现文件读取进度条
- python多线程编程: 使用互斥锁同步线程