http://www.cnblogs.com/WuErPIng/archive/2005/04/22/143267.aspx 侧身而过 吴尔平's Blog <script type="text/javascript"> // </script> <script src="http://www.cnblogs.com/WebResource.axd?d=PyW-m2hLmppJ9byT1bYEqw2&t=633363616222850001" type="text/javascript"></script> <script language="JavaScript"> function ctlent(evt,id) { if(evt.ctrlKey && evt.keyCode == 13) { try { TempSave(id); } catch(ex) { } finally { __doPostBack('AjaxHolder$PostComment$btnSubmit','') } } }</script> <script language="JavaScript">function SetReplyAuhor(author){document.getElementById('AjaxHolder_PostComment_tbComment').value+="@"+author+"/n";document.getElementById('AjaxHolder_PostComment_tbComment').focus();return false}</script> <script src="http://www.cnblogs.com/ScriptResource.axd?d=Io4r5Qx-zmHVyf9RpZLpA94PR0yylGVrHR75KduCbtx9Wbjv2jQEzXmeH0no0z7nxVOXJo-onw_3WI2pcwKr3w2&t=633363616222850001" type="text/javascript"></script> <script src="http://www.cnblogs.com/ScriptResource.axd?d=Io4r5Qx-zmHysvkgwLW9yk7rUGj5M-geQRTOmI9WMPaWNcTLoZx7IpNZpIR4LFVQ0&t=633065726460000000" type="text/javascript"></script> <script src="http://www.cnblogs.com/ScriptResource.axd?d=Io4r5Qx-zmHysvkgwLW9yk7rUGj5M-geQRTOmI9WMPaVSfXvXlH0xWaTv3M_TRDPzVKh75E08VU1&t=633065726460000000" type="text/javascript"></script> <script src="http://www.cnblogs.com/WS/AjaxWS.asmx/js" type="text/javascript"></script> <script type="text/javascript"> // </script> The man who can think and does not know how to express what he thinks is at the level of him who cannot think。 导航 博客园首页联系订阅 管理 统计 随笔 - 43 文章 - 1 评论 - 66 引用 - 1 公告 声 明 拒绝在未经过本人许可的情况下在任何商业性出版物或商业性网站上引用本站文章。 欢迎非商业引用,但请注明作者和出处(Trackback URL) ----------------- 语 录 How do you become an expert? The answer is the same in all the fields I've seen: 1. Learn the basics. 2. Study the same material again - but this time , concentrate on the details you didn't realize were important the first time around. Andrew Koenig 与我联系 发短消息 <script type="text/javascript"> function zzk_go() { var blogapp = 'WuErPIng'; var keystr = encodeURIComponent("blog:"+blogapp+" "+document.getElementById('q').value); window.location = "http://zzk.cnblogs.com/s?w="+keystr; } function zzk_go_enter(event) { if(event.keyCode == 13) { zzk_go(); return false; } } </script> 搜索 常用链接 我的随笔我的空间我的短信我的评论更多链接 我的参与我的新闻最新评论我的标签 随笔分类(49) ACE/TAO(2) (rss)C#(3) (rss)C++(23) (rss)C++/CLI(4) (rss)CORBA/COM (rss)Database(2) (rss)other(3) (rss)P2P(2) (rss)project (rss)Python(8) (rss)Translation(2) (rss) 文章分类(1) 项目开发(1) (rss) 大师 Bjarne Stroustrup Don Box Douglas C. Schmidt Herb Sutter Martin Fowler Stan Lippman UncleBob 朋友 龚敏敏 酒肉和尚 拖鞋 王猛 闻怡洋(vchelp) 逍遥 朱力 其它 V客人生 广州市劳动保障信息网上业务大厅 积分与排名 积分 - 51318 排名 - 838 最新评论 1. re: 在Dev-C++,VC7.1中使用ZThread 好不容易找到zthread的配置方法,万分感激!!! zthread的作者也真是,也不弄个帮助文档什么的,害得我安装这个库好麻烦哦。 --annidy 2. re: ACE入门 (一)构建 3.3 在 ACE_ROOT/ace 中找到 ace.dsw,用 vc7.1 打开。因为当前编译器版本高,会提示你转换。 转换后,在 Debug 和 Release 状态,在 Solution Ex... --156464 3. re: 软件需求分析的切入点 不错的呢. --留恋星空 阅读排行榜 1. ACE入门 (一)构建(4622) 2. 泛C++开发: 如何用C++写跨平台应用(3151) 3. ACE入门 (二)配置文件 (改)(2995) 4. C# 的 random shuffle(2866) 5. 在Dev-C++,VC7.1中使用ZThread (2489) 6. C++/CLI学习之升级编译器 (2436) 7. 用python快速开发一个实用的socket服务器(2402) 8. 浅尝boost之String algorithms library(2111) 9. EC3 翻译: 条款55 :熟悉 Boost(1614) 10. C++/CLI singleton模式 (双重检测锁实现)(1586) <script type="text/javascript"> // </script> 浅尝boost之timer 我一直是在努力推介boost,因为boost是一块美玉,但,没有什么是完美的。现在,我将暴露出boost的一点瑕疵:boost::timer。虽说是瑕不掩瑜,但瑕疵就是瑕疵。先看一看下面的例子: // win2000 中vc7.1编译运行 boost::timer t; Sleep( 1000 ); cout << t.elapsed() << endl; // redhat9 中gcc3.2.3编译运行 boost::timer t; sleep( 1 ); cout << t.elapsed() << endl; 他们的结果是一样吗?不同的操作系统,时钟精度是不一样,结果自然不完全一样;但我说的不一样不是这一点小小的差异,而是在redhat9上t.elapsed()返回的竟然是 0 。boost::progress_timer也有同样问题,为什么 ? boost::timer是一个clock()的非常简单的封装,简单到我不认为有理由存在于boost之样的库之中。基本只是下面的东西 class timer { public: timer() { _start_time = clock(); } void restart() { _start_time = clock(); } double elapsed() const{ return double(clock() - _start_time) / CLOCKS_PER_SEC; } private: clock_t _start_time; } ; // timer 所以抛开boost::timer这层包装来看,就是clock与sleep之间的问题了。为什么不用sleep就可以得到流逝的时间呢(cin.get ()也不能得到)。推其原因在于linux平台上sleep时,clock是获得CPU被使用的时间。而这时进程会等待一个signal,这一段时间 CPU不会被使用,clcok()认为时间没有流逝所致。而windows平台却是认为Sleep时也是有时间流逝的,而不是看CPU有没有被使用,我也 是这么考虑的 :-)。这样一来两者之间就有了极大的不同。 所以,想要一个正确的跨平台的timer就得自己动些手了。 一种方案是修改sleep,但问题是要保证调用者准确的调用了这个函数,另外,这个方法使用了轮询,感觉不好。一般sleep的调用者都会希望这时候程序不占用CPU资源。 void sleep( clock_t wait ) { clock_t goal; wait = (clock_t) wait * CLOCKS_PER_SEC; goal = wait + clock(); while( goal > clock()); } 另一种方案是自己取当前时间,取代clock(),至于用什么函数则看自己的要求了。发现在这个问题是在一个ACE程序中,我就用ACE封装的函数包装了一个,不同平台的sleep也可用ACE_OS::sleep代替 class Elapsed { public: Elapsed() { restart(); } void restart() { _tv = ACE_OS::gettimeofday(); } // 返回以秒为单位的流逝时间 long elapsed() { ACE_Time_Value now = ACE_OS::gettimeofday(); return now.sec() - _tv.sec(); } ACE_Time_Value ACE_elapsed() { return (ACE_OS::gettimeofday() - _tv); } private: ACE_Time_Value _tv; } ; 如果没有用ACE,完成一个这样的封装也是很简单的,因为,这个功能实在简单:-) posted on 2005-04-22 11:33 吴尔平 阅读(949) 评论(0) 编辑 收藏 所属分类: C++ <script type="text/javascript"> function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(handleInitializeRequest); //Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest); } function handleInitializeRequest(sender, args) { var prm = Sys.WebForms.PageRequestManager.getInstance(); var eid = args.get_postBackElement().id; /*if (eid.indexOf("DeleteLink")>0) { args.get_postBackElement().innerHTML = " 正在删除..."; } else */ if (eid.indexOf("btnSubmit")>0) { document.getElementById("AjaxHolder_PostComment_ltSubmitMsg").innerHTML="正在提交..."; document.getElementById("AjaxHolder_PostComment_btnSubmit").disabled = true; } else if(eid.indexOf("refreshList")>0) { document.getElementById("AjaxHolder_PostComment_refreshList").innerHTML=" 正在刷新..."; } } function TempSave(ElementID) { try { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } catch(ex) { } } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); } </script> 新用户注册 刷新评论列表 标题请输入标题姓名请输入你的姓名主页Email(博主才能看到)邮件地址无效 请输入验证码 验证码* 看不清,换一张 [登录][注册] 内容(请不要发表任何与政治相关的内容) 请输入评论内容 网站首页 新闻频道 社区 小组 博问 网摘 闪存 Remember Me? 登录 使用高级评论 新用户注册 返回页首 恢复上次提交 [使用Ctrl+Enter键可以直接提交] 相关文章: 深入浅出之正则表达式(一) 浅尝boost之format 浅尝boost之String algorithms library 浅尝boost之format【转贴】 数据库主键设计之思考 浅尝boost之any 相关链接:<script type="text/javascript"> var title = document.title; document.write(" "); document.write("