#include <windows.h>
#include <iostream.h>
DWORD WINAPI Fun1Proc( LPVOID lpParameter );
DWORD WINAPI Fun2Proc( LPVOID lpParameter );
HANDLE hMutex; //互斥句柄
int tickets = 100;
int main() {
HANDLE hThread1; //创建线程句柄
HANDLE hThread2;
//DWORD threadID;
hThread1 = CreateThread( NULL, 0, Fun1Proc, NULL, 0, NULL ); //创建线程
hThread2 = CreateThread( NULL, 0, Fun2Proc, NULL, 0, NULL );
CloseHandle( hThread1 ); //关闭线程句柄
CloseHandle( hThread2 );
hMutex = CreateMutex( NULL, FALSE, "ThreadDemo01" );
cout << "This is Main Thread running! "<< endl;
Sleep( tickets ); //挂起线程
return 0;
}
DWORD WINAPI Fun1Proc( LPVOID lpParameter ) {
while ( TRUE ) {
WaitForSingleObject( hMutex, INFINITE ); //互斥条件
if ( 0 < tickets ) {
Sleep( 1 );
cout << " This is 1 Thread running! " << tickets-- << endl;
} else {
break;
}
ReleaseMutex( hMutex ); //释放互斥句柄
}
return 0;
}
DWORD WINAPI Fun2Proc( LPVOID lpParameter ) {
while ( TRUE ) {
WaitForSingleObject( hMutex, INFINITE );
if ( 0 < tickets ) {
Sleep( 1 );
cout << " This is 2 Thread running! " << tickets-- << endl;
} else {
break;
}
ReleaseMutex( hMutex );
}
return 0;
}
win32线程学习
最新推荐文章于 2020-01-12 15:01:34 发布