亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么會輸出很多的a啊?

為什么會輸出很多的a啊?

慕村225694 2023-03-02 21:17:30
如果有一個這樣的語句HANDLE mutex = CreateMutex(NULL,false,NULL); while(true){WaitForSingleObject(mutex,INFINITE);cout<<"a"<<endl;}不是第二次到WaitForSingleObject(mutex,INFINITE);就會等在這里了么
查看完整描述

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;
}


查看完整回答
反對 回復 2023-03-06
?
翻翻過去那場雪

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,對象被觸發信號后,函數才會返回。


查看完整回答
反對 回復 2023-03-06
  • 2 回答
  • 0 關注
  • 89 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號