编程之美第一题的疑问

tomatobin 2011-09-06 03:48:23
  const DWORD busytime=10;
const DWORD idletime=busytime;
DWORD starttime=0;
while(true)
{
DWORD starttime=GetTickCount();

//busyloop
while(GetTickCount()-starttime<=busytime)
;

//idleloop
Sleep(idletime);
}

这是书上标准的解法。。
然后我按这个思路稍微修改了一下
const DWORD idletime=10; //在这里用DWORD是为了防止16位不够用@@
while(true)
{
clock_t start=clock();
while(clock()-start<0.1*CLOCKS_PER_SEC) ; //为什么用0.01不行呢
Sleep(idletime);
}

也就是busy这一句 while(clock()-start<0.1*CLOCKS_PER_SEC) ; //为什么用0.01不行呢,按理说应该 是0.01的时候CPU的曲线保持在50%啊。。。
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomatobin 2012-06-06
  • 打赏
  • 举报
回复
忘了结贴
luciferisnotsatan 2011-09-06
  • 打赏
  • 举报
回复
以上两段代码,跑下来都是接近100%(多核的,在任务管理器里关系设置里就勾选一个CPU)。

间隔得加大点,100ms
至善者善之敌 2011-09-06
  • 打赏
  • 举报
回复
没明白GOOGLE CLOCKS_PER_SEC
时钟滴答是否有问题
《数据结构与算法分析 C语言描述》Mark Allen Weiss著,冯舜玺译,机械工业出版社。Weiss教授的经典教材三部曲之一,其中的C语言描述版本,也就是本书,被称为20世纪最重要的30本计算机教材之一。Mark Allen Weiss,1987年在普林斯顿大学获得计算机科学博士学位,师从著名算法大师Robert Sedgewick,现任美国佛罗里达国际大学计算与信息科学学院教授。他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000-2004)。他的主要研究方向是数据结构,算法和教育学。中文版翻译质量很好,很难得。 本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。   在本书中,作者更加精炼并强化了他对算法和数据结构方面创新的处理方法。通过C程序的实现,着重阐述了抽象数据类型的概念,并对算法的效率、性能和运行时间进行了分析。 《数据结构与算法分析——C语言描述》(原书第2版),英文版的名称是《Data Structures and Algorithm Analysis in C》,作者是:(美)Mark Allen Weiss。原书曾被评为20世纪顶尖的30部计算机著作之一。之所以选这本书,还因为它的简体中文版翻译得相当不错,几乎没有给我的阅读带来什么障碍。^_^ 这本教科书所使用的是C语言,也许很多人会说C语言已经过时了,但是,我认为在数据结构的学习中,应该用尽量简单的语言,以免进入了语言的细枝末节中,反而冲淡了主。实际上在国外的许多大学中(甚至中学),数据结构和算法分析的课程是选用Scheme(Scheme语言是Lisp的一个现代变种、方言,诞生于1975年)的,例如MIT麻省理工大学极其著名的SICP课程。呵呵,语言又能说明什么呢? 学习建议: 算法和数据结构的内容,用最简单的C语言描述会比较清楚,没有必要使用C++和Java的面向对象描述。面向对象编程在这里没啥用处,反而冲淡了学习主。 初学者,先学习Weiss的《数据结构与算法分析 C语言描述》或者严蔚敏的《数据结构(C语言版)》。对于如何消化掉这本书,我初步给出一个建议: 读上Weiss的《数据结构与算法分析 C语言描述》三遍,能坚持下来,你的收获会很大: 第一遍,通读本书,不要丢掉任何细节,这一遍下来至少不能对书中涉及到的内容存在疑问(如果适当结合课后的习还是不错的,不过习不是第一遍的重点); 第二遍,照样通读本书,重点在于解决课后习,我发现本书的课后习绝对能让你学会思考并解决问,提高你的问解决能力与算法设计能力; 第三遍,复习巩固,注重你的算法设计能力,不能给你一个问,你去设计十天半个月,训练你的思维力与敏捷力。 然后,再速读C++和Java版的数据结构。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧