example.cpp
上传用户:hncsjd
上传日期:2022-07-08
资源大小:3772k
文件大小:1k
源码类别:

其他智力游戏

开发平台:

Visual C++

  1. #include <windows.h>
  2. #include <iostream.h>
  3. DWORD WINAPI Fun1Proc( LPVOID lpParameter );
  4. DWORD WINAPI Fun2Proc( LPVOID lpParameter );
  5. //int index = 0;
  6. int tickets = 100;
  7. HANDLE hMutex;
  8. void main( )
  9. {
  10.     HANDLE hThread1, hThread2;
  11.     hThread1 = CreateThread( NULL, 0, Fun1Proc, NULL, 0, NULL );
  12.     hThread2 = CreateThread( NULL, 0, Fun2Proc, NULL, 0, NULL );
  13.     CloseHandle( hThread1 );
  14.     CloseHandle( hThread2 );
  15.     
  16.     hMutex = CreateMutex( NULL, FALSE, NULL );
  17.     //TRUE代表主线程拥有互斥对象 但是主线程没有释放该对象  互斥对象谁拥有 谁释放
  18.     //FLASE代表当前没有线程拥有这个互斥对象
  19.     Sleep(4000);
  20. }
  21. DWORD WINAPI Fun1Proc( LPVOID lpParameter )
  22. {
  23.     while( true )
  24.     {
  25.         WaitForSingleObject( hMutex, INFINITE );
  26.         if( tickets>0 )
  27.             cout <<"t1: " <<tickets-- <<endl;
  28.         else  break;
  29.         ReleaseMutex( hMutex );
  30.     }
  31.     return 0;
  32. }
  33. DWORD WINAPI Fun2Proc( LPVOID lpParameter )
  34. {
  35.     while( true )
  36.     {
  37.         WaitForSingleObject( hMutex, INFINITE );
  38.         if( tickets>0 )
  39.             cout <<"t2: " <<tickets-- <<endl;
  40.         else  break;
  41.         ReleaseMutex( hMutex );
  42.     }
  43.     return 0;
  44. }