40 windows_40_Thread_Mutex 线程 - 互斥

windows_40_Thread_Mutex 线程 - 互斥

  1. // windows_39_Thread_Mutex.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include "windows.h"
  5. //互斥排队等候问题,谁先等候谁先执行
  6. HANDLE g_hMutex = NULL;
  7. DWORD WINAPI ThreadProc1( LPVOID pParam )
  8. {
  9. while (1)
  10. {
  11. //等候互斥量
  12. WaitForSingleObject( g_hMutex ,INFINITE);
  13. printf( "ThreadProc1--------\n" );
  14. Sleep( 500 );
  15. //释放互斥量
  16. ReleaseMutex( g_hMutex );
  17. }
  18. return 0;
  19. }
  20. DWORD WINAPI ThreadProc2( LPVOID pParam )
  21. {
  22. while (1)
  23. {
  24. //等候互斥量
  25. WaitForSingleObject( g_hMutex,INFINITE );
  26. printf( "-------------ThreadProc2\n" );
  27. Sleep( 500 );
  28. //释放互斥量
  29. ReleaseMutex( g_hMutex );
  30. }
  31. return 0;
  32. }
  33. DWORD WINAPI ThreadProc3( LPVOID pParam )
  34. {
  35. while (1)
  36. {
  37. //等候互斥量
  38. WaitForSingleObject( g_hMutex,INFINITE );
  39. printf( "-------ThreadProc3-----------\n" );
  40. Sleep( 500 );
  41. //释放互斥量
  42. ReleaseMutex( g_hMutex );
  43. }
  44. return 0;
  45. }
  46. void Create( )
  47. {
  48. DWORD nThreadID = 0;
  49. HANDLE hThread[3] = { NULL };
  50. hThread[0] = CreateThread( NULL, 0, ThreadProc1, NULL, 0, &nThreadID );
  51. hThread[1] = CreateThread( NULL, 0, ThreadProc2 , NULL, 0, &nThreadID );
  52. hThread[2] = CreateThread( NULL, 0, ThreadProc3 , NULL, 0, &nThreadID );
  53. }
  54. int _tmain(int argc, _TCHAR* argv[])
  55. {
  56. //创建互斥
  57. g_hMutex = CreateMutex( NULL, FALSE, NULL );
  58. Create( );
  59. getchar( );
  60. //关闭互斥
  61. CloseHandle( g_hMutex );
  62. return 0;
  63. }





posted @ 2016-06-10 20:32  -刀狂剑痴-  阅读(216)  评论(0编辑  收藏  举报