2 回答

TA貢獻1895條經驗 獲得超3個贊
當另一個線程一直占著mutex的時候才會等待
#include <windows.h>
#include <process.h>
HANDLE mutex = NULL;
unsigned int _stdcall threadfun( void* o )
{
while( true )
{
WaitForSingleObject(mutex,INFINITE);
printf( "press key\n" );
getchar(); //當這里一直占著的時候,主線程就一直等,直到這里releasemutex
ReleaseMutex( mutex );
}
return 0;
}
int main( int argc, char** argv )
{
mutex = CreateMutex(NULL,false,NULL);
_beginthreadex( NULL, 0, threadfun, 0, 0, 0 );
while(true)
{
WaitForSingleObject(mutex, INFINITE);
printf( "me\n" );
ReleaseMutex(mutex);
}
return 0;
}

TA貢獻2065條經驗 獲得超14個贊
當singleMutex被觸發后才會繼續執行,否則會一直等待。
WaitForSingleObject是windows的一個API:
1 函數聲明:
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);
2 函數說明:
hHandle[in]對象句柄??梢灾付ㄒ幌盗械膶ο?,如Event、Job、Memory resource notification、Mutex、Process、Semaphore、Thread、Waitable timer等。
dwMilliseconds[in]定時時間間隔,單位為milliseconds(毫秒).如果指定一個非零值,函數處于等待狀態直到hHandle標記的對象被觸發,或者時間到了。如果dwMilliseconds為0,對象沒有被觸發信號,函數不會進入一個等待狀態,它總是立即返回。如果dwMilliseconds為INFINITE,對象被觸發信號后,函數才會返回。
添加回答
舉報