Sleep

今天在我的 AMD Turion 64 X2 1.61 / 1.93GB 的烂康柏笔记本上使用 QueryPerformance* API函数测试发现 Sleep 函数的精度在 15 毫秒差不多。 Sleep(0) // >15毫秒 Sleep(16) // >30毫秒 ... 没兴趣再深入测试了,本来还想设置一下线程亲缘性看看是否一样。想想我用 QueryPerformanceFrequency 得到的频率不是 CPU 频率,所以没必要了。
win app | 2011-02-24 22:20 | 阅读 981 次 | 评论 0 条

抽象派验证码

闲话 | 2011-02-09 16:55 | 阅读 1242 次 | 评论 0 条

R6025 -pure virtual function call

前几天遇到了传说中的R6025错误,经过网络上搜索一番知道这是由于运行时调用了鸡肋的纯虚函数,一般出现在构造函数和析构函数中间接的调用了纯虚函数。但问题是,这不是我的情况。因此,我进行了两天的代码调试,总算是发现了元凶。 问题出在完成端口!在我的完成端口模型中,完成键是一个对象,它随一个SOCKET句柄关联到完成端口。当一个完成包被成功获取,则使用这个完成键(对象)执行完成任务。这没错,并且我把对象使用引用计数来管理生命周期,一切尚在预期之中。但问题出在,我需要更换这个SOCKET句柄的完成键。当这个SOCKET需要收发数据,则被封装在一个叫NetSession的类中,完成键就是...
winsock+icop | 2011-02-02 19:31 | 阅读 16869 次 | 评论 1 条

995 : 由于线程退出或应用程序请求,已放弃 I/O 操作。

在一个线程A中检测AcceptEx的存量,如果小于某个数值则投递一定数量的AcceptEx到完成端口。这个线程非常简单,但是在程序退出时必须清理掉投递到完成端口中的那些AcceptEx,以达到释放资源。因此,在程序退出前我必须发出信号给线程A,告诉它要终止运行。然,线程A是终止运行了,但存在完成端口中的AcceptEx还没清理,我尝试了一下几种清理方式: 第一天、直接closesocket(listensocket)关闭这个关联到完成端口的监听SOCKET。 这种方式,失败了!完成端口鸟都没鸟这已经关闭的listensocket,没有发生出队一个失败的完成包。 第二天、先调...
winsock+icop | 2011-01-30 22:42 | 阅读 15283 次 | 评论 5 条

自杀式多重继承

template <typename T>class InterfaceT{public: InterfaceT(void) { } virtual ~InterfaceT(void) = 0 { } T t;};class InterfaceA{public: virtual ~InterfaceA(void) = 0 {} virtual void TestFun1(void) = 0; virtual void TestFun2(void) = 0;};#define TEST 1#if TEST == 1class...
C++ | 2011-01-02 01:32 | 阅读 1203 次 | 评论 1 条
最新评论