解决方案 »
- 关于抛物线拟合
- 结贴率是什么?
- getmodulefilename问题
- 请各位大侠帮助 : 若有Gzip解码的内存字符串的程序,发一份参考
- 如何在VC中完全删除一个已存在的类?
- 真是见鬼,我一个月写的代码就变成了乱码,谁能帮我找一下
- 请教:如何实现文件上传
- 谁有《Inside the c++ object model》中文名《深度探索c++物件模型》的电子版。
- 我的毕业课题用snmp作流量分析,请问各位高手,是用socket还是winsnmp api? 另:winsnmp是否只能在NT下运行?
- 什么叫公寓线程?
- 套接字 阻塞模式
- OpenPrinter第一个参数为空时,第二个参数返回的打印服务器句柄是干嘛用的?
而后面单独建立两个线程,是放置阻塞主线程的?
那分为两个线程,ReadThread和ProcessThread的好处是什么呢?
为了防止阻塞主线程,我也可以只创建一个线程,比如叫做ReadAndProcessThread。
在ReadAndProcessThread线程函数里先recv再处理。
分为两个线程来处理,我个人理解的好处是,
这样方便以后扩展,可以在计算线程里做些别的事情。
比如说如果不想读线程recv无限阻塞等待下去,
就可以在计算线程的WaitForSingleObject中设置超时时间。
这是将IO收发(通讯)和数据处理(业务)分离
这里为了可以一边recv数据,一边处理,有时处理数据比较耗时,单线程会影响recv
不一定是为了防止阻塞主线程这重模型是大规模、高性能服务器普遍的设计方案
看代码的写法应该不会是为了“可以一边recv数据,一边处理,有时处理数据比较耗时,单线程会影响recv”
因为ReadThread和ProcessThread共同处理一个缓冲区,并使用了CRITICAL_SECTION进行同步。
在ProcessThread工作的时候,ReadThread是无法recv数据的。
去掉 EnterCriticalSection相关内容
会有什么问题?