[問題] 釋放 CPU 給其他程式

作者: sjgau (sjgau)   2015-05-10 18:11:57
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
windows 7 底下的 Dev-C++
問題(Question):
如標題的需求,需要呼叫哪個函數?
預期的正確結果(Expected Output):
在 delay 3000ms 的時候,能夠把 CPU time
釋放給別個程式使用
程式碼(Code):(請善用置底文網頁, 記得排版)
time1(&t1);// get ms of now
t2= t1;
while ((t2-t1) < 3000) {
time1(&t1);
}
補充說明(Supplement):
time1(&t1);
是自己寫的副程式
作者: Bencrie   2015-05-10 18:44:00
直接 sleep
作者: grayStone (灰色石頭)   2015-05-10 19:35:00
Sleep 似乎在 windows.h?
作者: johnjohnlin (嗯?)   2015-05-10 19:55:00
同意一樓,sleep應該本來就會釋出CPU
作者: Killercat (殺人貓™)   2015-05-10 22:52:00
標準的做法是sleep(1) 替代做法是yield()
作者: azureblaze (AzureBlaze)   2015-05-10 23:51:00
yield被拔掉很久了 但是他還是以macro存在於windows.h佔掉一個不算稀有的動詞超討厭...
作者: uranusjr (←這人是超級笨蛋)   2015-05-11 01:08:00
yield 在越來越多語言是 keyword 呢, 別嫌啦
作者: azureblaze (AzureBlaze)   2015-05-11 01:10:00
keyword有用途,直接#define掉是找人麻煩啊第一次把函數取成Yield的時候debug找了超久
作者: Killercat (殺人貓™)   2015-05-11 17:13:00
Windows取代掉的是Yield() 不過我說的是std::this_thread::yield()(C++11以後才有) 這東西是明確的取代掉sleep(1)不然sleep(1)實在是太過於意味不明。另外說到#define,win32 API幾百年前的古董了 又是C所以別嫌啦... XDDDD 用古董就要有這種覺悟啊 orz不過很有趣的是,C++11只有提供本thread的yield似乎還是沒有定義隨手拿一個thread叫他yield的方法也就是說「只能自己thread去yield 不能在別的thread要求別人yield」(也算合理啦)
作者: uranusjr (←這人是超級笨蛋)   2015-05-11 23:43:00
這很合理吧, 叫一個 thread 突然暫停也太奇怪了
作者: Killercat (殺人貓™)   2015-05-12 18:23:00
誒,我才發現我把標準作法替代作法寫反了...標準做法是std::this_thread::yield(),替代是sleep(1)

Links booklink

Contact Us: admin [ a t ] ucptt.com