国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
初學線程的一個小問題! - 奧博IT資訊

void main()
{
HANDLE hThread1;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
Sleep(10);//
}

DWORD WINAPI Fun1Proc(
  LPVOID lpParameter   // thread data
)
{ cout<<"thread1 is running"<<endl;
return 0;
}

不加Sleep(10).         運行結(jié)果:空.
加上Sleep(10)后        運行結(jié)果:thread1 is running


書中說:
Sleep(10)讓主線程暫停運行10秒,使其放棄執(zhí)行的權(quán)利,操作系統(tǒng)就選擇線程1執(zhí)行;
當該線程1運行完成后或者10ms間隔時間已經(jīng)過去,  主線程就恢復運行,main()函數(shù)退出.

問題:
當該線程1運行完成后,或者10ms間隔時間已經(jīng)過去, 主線程就恢復運行,main()函數(shù)退出.

//我覺得這兩句有問題?
單單線程1運行完成后,主線程并不是立即就恢復運行,得等10ms后主線程恢復運行,main()函數(shù)退出

應(yīng)該為:

1:線程1在主線程的等待的10ms時間內(nèi)已經(jīng)結(jié)束. 則:得等10ms后恢復運行,main()函數(shù)退出.
2:線程1在主線程的等待的10ms時間內(nèi)沒結(jié)束,則:在主線程的10ms后,主線程最先被CPU執(zhí)行的時候,main()函數(shù)退出.
各位我理解的對嗎?

問題2:
我把Sleep(10),改為Sleep(0);按理說,不等待,等待時間為0,與不加Sleep(0)時一樣,可結(jié)果還是先執(zhí)行Thread 1.


----------------------------------------------------------------------

主線程退出的時候會強制結(jié)束子線程。但是實際上無法保證主線程在Sleep10秒之后立即就能運行。

Sleep(0)是有特殊意義的,雖然線程并不休眠,但是會交出時間片,由系統(tǒng)調(diào)配下一個等待線程運行。

摟主可以參考下 Windows核心編程

--------------------------------------------------------

Sleep之后線程就已經(jīng)暫停了(就是交出時間片)
參數(shù)只是暫停多長時間


--------------------------------------------------------

每條sleep()語句最少會消耗時間大概(20~50ms),根據(jù)系統(tǒng)狀況不同可能有所不一樣
就向上面幾位說的,因為sleep引起的暫停使得其他事件得以執(zhí)行
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何暫停主線程直到第二個線程的終止? - Chenxinyi's Weblog - CSD...
編程思想之多線程與多進程(4):C 中的多線程 - 博客 - 伯樂在線
AfxBeginThread
熬了兩個通宵寫的!終于把多線程和多進程徹底講明白了!
對老趙寫的簡單性能計數(shù)器的修改續(xù)- 關(guān)于 GetThreadTimes - eaglet - 博客園
帶你入門java-多線程
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服