摘要: 仔细研究了一下,如果要使用ACE_TP_Reactor,则不宜对同一个ACE_Event_Handler同时注册SOCKET和其它事件,因为ACE_TP_Reactor只保证“不会有2个线程同时调用同一个Event_Handler的SOCKET事件处理器”。上次我修改了一个版本,让它能同时处理SOCKET事件和TIMER事件,不过在压力测试下还是出了问题。原因是当客户端主动断线时,peer().g...阅读全文
08 2005 档案
摘要: 看到很多地方都使用下面的方式来表示不等待:ACE_Time_Value nowait (ACE_OS::gettimeofday());peer ().send (..... &nowait);这包括马维达译的《ACE程序员指南》。上次测试了一下,证实这个用法是错误的,可以做一个简单的测试环境:写一个简单的echo服务器,服务端收到数据以后sleep几秒再写回peer,而客户端则在发送数据...阅读全文
摘要: 2005年8月23日晚8时,深圳市宝安区龙华段发生建市以来最大一起车祸,死18人,伤17人。心痛! 心痛!好好的人一下子就没了。司机肯定是有责任的,躲避单车是正确的,但那种情况下没有刹车肯定不正常。他也赔不起18条人命,世界上没有人能赔得起别人的命。那位骑单车的,现在可能没办法知道他当时是不是闯红灯,也不知道那里有没有红灯。在深圳行人闯红灯是比较普遍的现象,似乎每个人都只在乎那几秒时间。追究责任也...阅读全文
摘要: ACE_TP_Reactor保证同一处理器(Handle)的SOCKET事件,在同一时间不会由多个线程同时调用,但并没有保证多个线程不在同一时间分别处理同一处理器(Handle)的SOCKET和定时器,而且如果在定时器处理中超过定时器间隔,将会有另一线程再次调用定时器处理函数,带来不必要的线程同步工作。通过查看源码(TP_Reactor.cpp)可以看出,当处理一个SOCK事件时,TP_React...阅读全文
摘要: 注:里面使用了一个自己写的C++委托类Delegate,不是.net中的委托,关于这个委托详见我的C++委托类最终版。本文所写的代码是跨平台的纯C++实现。一、简要说明。这里讲的“异步调用代理组件”,简要描述如下。假如有一个耗时的方法(不论它是本地调用还是远程调用),这个调用耗时的原因是由于某些原因的阻塞,比如IO,通常可以把这个操作交给一个线程去处理,为了通用、高效,往往会实现一个领导者/追随者...阅读全文
摘要: 上次写给一个朋友看的。#include <iostream>using namespace std;struct Test{Test& operator ( ) ( ){cout << "当";return *this;}};int main(){Test () () () () () () () () () ();cout << endl;cout &...阅读全文
摘要: 看下面的输出就知道,其实就是定义了一个Delegate<void(int,int)>:1>c:\documents and settings\administrator\my documents\visual studio 2005\projects\delegate\delegate\call.h(74) : error C2752: 'Delegate<T>' :...阅读全文
摘要: 这是C里面的三目运算符?:使用方法:int max_ab = a > b ? a : b;和下面的if表达式是等价的:int max_ab;if (a > b) max_ab = a;else max_ab = b;在python里可以使用and or表达式:max_ab = a > b and a or b整个表达式的值是最后一个被求值的表达式的值。所以如果a>b,那么a...阅读全文

