互斥
HANDLE g_hMutex = 0;//接收互斥句柄
g_hMutex = CreateMutex( NULL, FALSE, NULL );//创建互斥
WaitForSingleObject( g_hMutex, INFINITE );//等待无限时长
ReleaseMutex( g_hMutex );//释放互斥
实现过程
#include <Windows.h>
#include <stdio.h>
HANDLE g_hMutex = 0;//接收互斥句柄
DWORD CALLBACK TestProc( LPVOID pParam ){
char* pszText = (char*)pParam;
while(1){
// printf("%s\n", pszText );
// Sleep(1000);
WaitForSingleObject( g_hMutex, INFINITE );
for(int i=0; i<strlen(pszText); i++){
printf("%c", pszText[i]);
Sleep(125);
}
printf("\n");
ReleaseMutex( g_hMutex );
}
return 0;
}
DWORD CALLBACK TestProc2(LPVOID pParam ){
char* pszText = (char*)pParam;
while( 1 ){
// printf("%s\n", pszText);
// Sleep(1000);
WaitForSingleObject( g_hMutex, INFINITE );
for(int i=0; i<strlen(pszText); i++){
printf("%c", pszText[i]);
Sleep(125);
}
printf("\n");
ReleaseMutex( g_hMutex );
}
return 0;
}
int main(){
g_hMutex = CreateMutex( NULL, FALSE, NULL );
DWORD nID = 0;
char* pszText = "*******";
HANDLE hThread = CreateThread( NULL, 0, TestProc, pszText, 0, &nID );
char* pszText2 = "--------";
HANDLE hThread2 = CreateThread( NULL, 0, TestProc2, pszText2, 0, &nID );
getchar( );
CloseHandle( g_hMutex );
return 0;
}