如题:
开了一个县城使用socket接收数据,并将接收到的数据放到一个缓冲区中;
又开了一个县城从这个缓冲区中读取数据;
但接收数据的缓冲区有时会莫名其秒的当掉,有时甚至导致整个程序退出,使用GetLastError()又得不到什么错误,唉,真的好奇怪,是县城的问题还是SOCKET的问题呢?
开了一个县城使用socket接收数据,并将接收到的数据放到一个缓冲区中;
又开了一个县城从这个缓冲区中读取数据;
但接收数据的缓冲区有时会莫名其秒的当掉,有时甚至导致整个程序退出,使用GetLastError()又得不到什么错误,唉,真的好奇怪,是县城的问题还是SOCKET的问题呢?
解决方案 »
- 以定义的标志分割CString型字符串
- C++如何学好!VC很多函数都是API的核心编程!所谓的核心编程指的是哪方面?
- 为什么外网的FTP服务器无法下载(不接受下载命令)
- 急!!! 如何捕捉到程序窗体的一部分区域,并打印???
- 有没有那本书是专门介绍MFC各种库类及其成员函数作用的书?
- 我想自学数据结构,希望高手讲一讲自己学习的经验
- 如何打印数据库中表的记录
- 如果函数返回一个字符串指针,那么他真正的字符串是放在哪里的?
- 如何浏览文件夹?类似于netants在下载时,文件保存什么目录下。
- 急:如何在基于对话框的工程中实现创建切分窗体!!!
- 使用ODBC如何关闭一表,打开另一表?苦思一周,未果?
- 深入浅出mfc第二版中是不是用的VC5和MFC4,现在VC6中变化多不多?谢谢
谢谢,我用了mutex,可以吗?
socket主要是写在dll中了,在我这边的县城中调用,出现以上问题;我想可能不是多县城共用缓冲区的问题,我将另外一个县城注释掉,仍然会出现这个问题,难道是DLL的问题?这个DLL在另一个WIN32程序中调用,没什么问题,如果不动键盘和鼠标的话,如果一动键盘和鼠标,这个程序就会不声不响的退出,也不出错误框。很奇怪哟!
该程序详细的环境(单/双CPU、操作系统及版本、平均可以持续的时间、无连接情况下的运行状态)。
1.单cpu :p4 1.70 memory:256m
2.win2000 sp3
3.运行时间:从我上班开机到我下班关机
4.无连接时停下不动
冬冬的每个socket线程都有自己的缓冲区对象,
每个缓冲区都带自己的CS,对缓冲的读写都有CS保护
所有的缓冲区的交互都通过"线程祖先"的缓冲管理类对象控制,
该缓冲管理类对象与监视控制每个socket线程的通讯管理类对象平级,都由"线程祖先"创建
据"X.T & X.P 's Delphi 5 Developer's Guide "
提示 临界区与事件对象(比如互斥对象)的最大区别是在性能上。临界区在没有线程冲突时,要用10-15个时间片,而事件对象由于涉及到系统内核要用400-600个事件片。
在线程中使用共享内存,需要仔细调试。
CriticalSection保证了在同一时间下,只有一个线程能够访问共享内存。