- 浏览: 24699 次
- 性别:
- 来自: 东莞
最新评论
-
flythink:
oledb是不是更容易弄一些? 纯猜测
MS ODBC for DMD 2.053 -
hqs7636:
8错,继续完善一下。。。
MS ODBC for DMD 2.053 -
rocex:
lz的这个工具好用,可以随时在1.x和2.x上切换。
DEx ...
D2/Phobos与D2/Tango一键切换编译环境设置 -
Colorful:
链接是这个 : http://code.google.com/ ...
Windows D编程类封装初步学习并请教 -
betty_betty2008:
哥们:链接打不开
Windows D编程类封装初步学习并请教
中间解决了好几个问题,尚有几个问题没解决,已在NG上提问。备忘
timer.d
progress.d
测试程序timer_test.d
timer.d
module timer; import core.stdc.time; class Timer { private: core.stdc.time.clock_t _start_time; public: this() { _start_time=core.stdc.time.clock; } void restart() { _start_time=core.stdc.time.clock; } const double elapsed() { return cast(double)(core.stdc.time.clock-_start_time)/CLOCKS_PER_SEC; } const double elapsed_max() { return cast(double) (core.stdc.time.clock_t.max-_start_time)/cast(double)CLOCKS_PER_SEC; } const double elapsed_min() { return cast(double)(1)/cast(double)CLOCKS_PER_SEC; } }
progress.d
module progress; import std.stdio; import core.stdc.stdlib; import core.stdc.stdio; import timer; class progress_timer:Timer { private: this(progress_timer lhs) { } progress_timer opAssign(progress_timer lhs) { progress_timer temp=lhs; return temp; } public: this(){} ~this() { writefln("%.2f seconds elapsed so far.",elapsed); } } class progress_display { private: string m_s1; string m_s2; string m_s3; ulong _count; ulong _expected_count; ulong _next_tic_count; uint _tic; private: void display_tic() { uint tics_needed= cast(uint)((cast(double)_count/_expected_count)*50.0); do { //printf("*"); write('*'); fflush(core.stdc.stdio.stdout); }while( ++_tic<tics_needed); _next_tic_count=cast(ulong)((_tic/50.0)*_expected_count); if( _count==expected_count) { if( _tic<51) { //printf("*"); write('*'); fflush(core.stdc.stdio.stdout); } putchar('\n'); } } private: this() { } this(progress_display lhs) { //progress_display temp=lhs; //return temp; } progress_display opAssign(progress_display lhs) { progress_display temp=lhs; return temp; } public: this(ulong expected_count, string s1="\n", string s2="", string s3="") { m_s1=s1; m_s2=s2; m_s3=s3; restart(expected_count); } void restart(ulong expected_count) { _count= _next_tic_count=_tic=0; _expected_count=expected_count; write(m_s1); write("0% 10 20 30 40 50 60 70 80 90 100%\n"); write(m_s2); write("|----|----|----|----|----|----|----|----|----|----|"); write("\n"); write(m_s3); if( ! _expected_count) _expected_count=1; } ulong opAddAssign(ulong increment) { if((_count+=increment)>_next_tic_count) { display_tic; } return _count; } ulong opPostInc() { return opAddAssign(1); } const ulong count() { return _count; } const ulong expected_count() { return _expected_count; } }
测试程序timer_test.d
module timerProject; import timer; import progress; import std.stdio; import std.c.stdlib; static this() { scope Timer t0=new Timer; writefln("timer.elapsed_min() reports %f seconds.", t0.elapsed_min); writefln("timer.elapsed_max() reports %f seconds," "which is %.2f hours",t0.elapsed_max,t0.elapsed_max/3600.0); writefln("\nverify progress_display(0) doesn't divided by zero"); scope progress_display zero=new progress_display(0); ++zero; long loops; scope Timer loop_timer=new Timer; const double time=1.0; writefln("\ndetermine %.0f second iteration count",time); for(loops=0;loops<int.max && loop_timer.elapsed<time;++loops){} writefln("%d iterations",loops); long i; bool time_waster; scope progress_timer pt=new progress_timer; scope Timer t1=new Timer; scope Timer t4;//=new Timer; scope Timer t5=new Timer; writefln("\nburn about %.0f seconds.",time); scope progress_display pd=new progress_display(loops); for(i=loops;i>0;i--) { time_waster=loop_timer.elapsed<time; ++pd; } scope Timer t2=t1; scope Timer t3=new Timer; t4=t3; t5.restart; writefln("\nburn about %.0f seconds again",time); pd.restart(loops); for(i=loops;i>0;i--) { time_waster=loop_timer.elapsed<time; ++pd; } if(time_waster) write(" "); scope progress_display pd2=new progress_display(50,"\nLeading string 1", "Leading string 2","Leading string 3"); for(;pd2.count<50;++pd2){} writefln("\nt1 elapsed:%f",t1.elapsed); writefln("\nt2 elapsed:%f",t2.elapsed); writefln("\nt3 elapsed:%f",t3.elapsed); writefln("\nt4 elapsed:%f",t4.elapsed); writefln("\nt5 elapsed:%f",t5.elapsed); writefln("t1 and t2 should report about the same times (very approximately %0.f seconds", 2*time); writefln("t3,t4 and t5 should report the same times,\n" "and these should be about half the t1 and t2 times.\n" "The following elapsed time should be slightly greater than t1."); } int main(string[] args) { getchar; return 0; }
评论
2 楼
betty_betty2008
2009-08-13
惭愧,C++ BOOST 里有一个TIMER 的库,看起来相对简单一些,就练习了一下,转到D2后发现输出时间(D2 vx C++)差别挺大,在NG上提问,没人理;当初也没想着要发布在圈子里,这个博客有时傻傻D~~
1 楼
l250707449
2009-08-12
高..硬是没看懂
发表评论
-
D2 下win32 api 中文框架备忘
2011-07-28 17:49 1041隔一段时间就忘了怎么在D2下win32 SDK框架里使用中文, ... -
MS ODBC for DMD 2.053
2011-05-20 16:49 1217东拼西凑,终于在dmd2.053下成功连接上了ODBC 数据库 ... -
截屏、闪屏(Timer)、输入窗口--DFL for D2.053
2011-05-16 17:41 1271这个小练习用D2.053+DFL完成了以下功能: 1.截屏(C ... -
SDK写的一个画树(花)程序
2009-11-23 17:53 1078[img]C:\Documents and Settings\ ... -
json for D2.034
2009-10-13 19:54 718作者:Jeremie Pelletier 链接: [url] ... -
D2 中使用VC的Windows资源文件
2009-09-15 15:26 1225终于试成功了。总结一下: 一.在*.RC里包含window ... -
windows vfw.lib
2009-09-07 20:06 1327上传到这里,因为有时候改变工作地点后另一台机上没有。:P -
Windows D编程类封装初步学习并请教
2009-09-01 18:37 1212首先把要请教的问题写在最顶部: 1。事件最好的包装方法是怎样的 ... -
再学SQLite3 API
2009-08-21 17:48 2237这次进一步看了看SQLigte3 的API,不用上次写的类包装 ... -
"D"iving Into the D Programming Language
2009-08-04 16:23 1585"D"iving Into the D P ... -
Sqlite3 C++类库Sharplite 转D
2009-07-17 16:32 1658这是一份作业,因为所有创作的部分都是前人的。 材料:1.sql ... -
D2 反射和defineEum! 练习
2009-07-16 14:21 867备忘: module DioApp; imp ... -
D2 std.stream 文件读写小练习
2009-07-13 19:12 1777笔记要点: 1。个人工具包samsTools 工具之一Prom ... -
DFL for DMD2.031
2009-07-10 16:33 907从NG里要到的,俺测过了,OK 的啦. 原贴原下载地址链接: ... -
D2/Phobos与D2/Tango一键切换编译环境设置
2009-05-08 18:01 1167一。适合谁: 象俺一样,反反复复搭不起D编译环境的小菜 二。不 ... -
(翻译)Phobos 2.029 R部 std.random
2009-04-27 14:58 1317std.random ... -
(翻译)Phobos 2.029 P部 std.process
2009-04-23 11:57 1158std.process ... -
(翻译)Phobos 2.029 P部 std.path
2009-04-23 10:52 1318std.path ...
相关推荐
本文实例讲述了C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析,分享给大家供大家参考。具体分析如下: 在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③...
Boost.Asio的定时器类(如`deadline_timer`和`high_resolution_timer`)允许程序在指定时间后执行操作,而信号处理器可以捕获和处理系统信号,如SIGINT(Ctrl+C)。 6. **C++17特性**: 在C++17标准下,Boost....
5. **定时器**:Boost.Asio提供了`deadline_timer`和`steady_timer`,它们可以用于设置超时或定期执行任务,是实现定时操作的重要工具。 6. **多路复用**:Boost.Asio通过`io_service::run()`方法实现了事件驱动的...
1. **源代码**:可能有"boost/timer.hpp"头文件,定义了`boost::timer`类及其相关功能,以及实现这些功能的源代码文件。 2. **文档**:Boost库通常会提供详细的Doxygen格式的API文档,帮助开发者了解如何使用`boost:...
- **异步编程模型**:Boost.Asio的核心是基于事件驱动的非阻塞I/O模型,这使得程序能够同时处理多个I/O操作,提高效率。 - **服务(Service)和执行器(Executor)**:服务代表了特定类型的I/O操作,而执行器负责...
1. **Boost.Timer库**:Boost.Timer库提供了一种简单的方法来度量程序运行的时间。它提供了不同精度的计时器,可以用来跟踪函数执行、任务完成或任何其他需要时间测量的事件。这个库主要包含两个类:`boost::timer`...
要解决这个问题,可以使用`Timer.Change`方法将间隔设置为`Timeout.Infinite`,或者直接使用`Dispose`: ```csharp timer.Change(Timeout.Infinite, Timeout.Infinite); // 停止计时器 // 或者 timer.Dispose(); //...
"layer.timer"是一个基于layer框架的日期控件插件,它为Web应用提供了方便快捷的日期选择功能。layer是一款广泛使用的JavaScript弹层组件,能够帮助开发者轻松实现对话框、提示、加载层等多种页面交互效果。而layer....
- **定时器**:使用 `asio::steady_timer` 或 `asio::deadline_timer` 实现基于时间的操作。 - **信号处理**:监听系统信号(如 SIGINT 和 SIGTERM)并做出响应。 - **自定义分配器**:优化内存管理和性能。 ### ...
Console.WriteLine("Press any key to stop the timer..."); Console.ReadKey(); // 停止计时器 timer.Change(Timeout.Infinite, Timeout.Infinite); } static void DisplayTime(object state) { Console....
《使用jquery.timer.js实现动态显示时间的深度解析》 在网页设计中,实时显示时间是一项常见的需求,例如倒计时、实时更新的时间戳等。jQuery作为一个广泛使用的JavaScript库,为开发者提供了丰富的功能和便利。而...
课时12:5.GraghView Results 和Timer 定时器 课时13:6.Processor 处理器和Assertion断言 课时14:7.演示:掌握JMeter各元素的使用 课时15:JMeter-II.ppt 课时16:1.测试SQL Query的方法 课时17:2.演示:测试SQL Query ...
标题中的“Timer_0_mode_3_timer_gate_Soft.zip_Soft!_at89c51_site:www.pudn.com”暗示了这是一个关于AT89C51微控制器的程序,具体涉及到Timer 0工作在模式3,并且可能包含了定时器门控功能的软件实现。这个压缩包...
《Boost.Asio C++ Network Programming Cookbook》是一本专注于C++网络编程的实用指南,它主要围绕Boost.Asio库展开,该库是C++标准库在处理异步I/O和网络编程方面的一个强大扩展。Boost.Asio是C++社区广泛认可的...
《Boost.Asio C++ Network Programming(2nd) Source Code》是C++网络编程领域的一份珍贵资源,尤其对于深入理解Boost.Asio库的开发者来说,它提供了宝贵的实践材料。Boost.Asio是C++标准库的一个扩展,专注于网络...
Boost.Asio还提供了定时器类,如`deadline_timer`和`steady_timer`,用于安排在特定时间点执行操作。这对于超时控制和周期性任务非常有用。 6. **地址和端口处理**: 库包含了`ip::address`和`ip::endpoint`类,...
System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务。在必须更新用户界面的情况下,建议不要使用该计时器,因为它的回调不在用户界面线程上发生。在此类情况下,System.Windows....
C#中的System.Timers.Timer定时器使用和定时自动清理内存应用 C#中的System.Timers.Timer定时器是一种常用的定时器组件,用于在指定时间间隔内触发事件。该组件广泛应用于各种场景,如定时更新数据、定时清理内存、...
在.NET框架中,C#提供了两种Timer类,用于在多线程环境中实现定时触发操作:System.Threading.Timer和System.Timers.Timer。这两种Timer虽然都与时间调度相关,但在使用上和特性上有所不同。在这个主题中,我们将...