看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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); 是自己寫的副程式 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.192.25 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1431252721.A.085.html
Bencrie: 直接 sleep 05/10 18:44
grayStone: Sleep 似乎在 windows.h? 05/10 19:35
johnjohnlin: 同意一樓,sleep應該本來就會釋出CPU 05/10 19:55
Killercat: 標準的做法是sleep(1) 替代做法是yield() 05/10 22:52
azureblaze: yield被拔掉很久了 但是他還是以macro存在於windows.h 05/10 23:51
azureblaze: 佔掉一個不算稀有的動詞超討厭... 05/10 23:52
uranusjr: yield 在越來越多語言是 keyword 呢, 別嫌啦 05/11 01:08
azureblaze: keyword有用途,直接#define掉是找人麻煩啊 05/11 01:10
azureblaze: 第一次把函數取成Yield的時候debug找了超久 05/11 01:11
Killercat: Windows取代掉的是Yield() 不過我說的是 05/11 17:13
Killercat: std::this_thread::yield() 05/11 17:13
Killercat: (C++11以後才有) 這東西是明確的取代掉sleep(1) 05/11 17:14
Killercat: 不然sleep(1)實在是太過於意味不明。 05/11 17:14
Killercat: 另外說到#define,win32 API幾百年前的古董了 又是C 05/11 17:15
Killercat: 所以別嫌啦... XDDDD 用古董就要有這種覺悟啊 orz 05/11 17:15
Killercat: 不過很有趣的是,C++11只有提供本thread的yield 05/11 17:16
Killercat: 似乎還是沒有定義隨手拿一個thread叫他yield的方法 05/11 17:16
Killercat: 也就是說「只能自己thread去yield 不能在別的thread 05/11 17:25
Killercat: 要求別人yield」(也算合理啦) 05/11 17:25
uranusjr: 這很合理吧, 叫一個 thread 突然暫停也太奇怪了 05/11 23:43
Killercat: 誒,我才發現我把標準作法替代作法寫反了... 05/12 18:23
Killercat: 標準做法是std::this_thread::yield(),替代是sleep(1) 05/12 18:24