作者:
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);
是自己寫的副程式
標準的做法是sleep(1) 替代做法是yield()
yield被拔掉很久了 但是他還是以macro存在於windows.h佔掉一個不算稀有的動詞超討厭...
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-05-11 01:08:00yield 在越來越多語言是 keyword 呢, 別嫌啦
keyword有用途,直接#define掉是找人麻煩啊第一次把函數取成Yield的時候debug找了超久
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 突然暫停也太奇怪了
誒,我才發現我把標準作法替代作法寫反了...標準做法是std::this_thread::yield(),替代是sleep(1)