[问题] 释放 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