具体问题如下:
我现在有2个线程 Udprecv 和 Dataprc
Udprecv 主要就是接收数据,存放到缓冲区,一路一个缓冲区,用select对I/O进行控制的(不知道这种作法是否正确??)只要有一个连接就创建一个Dataprc线程,分别对对应的缓冲区进行处理。
我不知道如何对缓冲区进行控制,请高手多多指教~~
blow~
我现在有2个线程 Udprecv 和 Dataprc
Udprecv 主要就是接收数据,存放到缓冲区,一路一个缓冲区,用select对I/O进行控制的(不知道这种作法是否正确??)只要有一个连接就创建一个Dataprc线程,分别对对应的缓冲区进行处理。
我不知道如何对缓冲区进行控制,请高手多多指教~~
blow~
解决方案 »
- MFC初学者,请问给EDIT控件定义了一个变量,float m_temp?
- MFC对话框中 动态创建控件并响应消息的源码 谁贡献一下?
- 对于VC没有实战经验,初学者,请出点简单题目……
- 问一个很简单的问题,关于CTabCtrl和CPropertyPage的
- 我在CDMA无线上网的机器上,建立一个UDP服务程序,为什么收不到数据包????
- error C2065: 'WSAPROTOCOL_INFO' : undeclared identifier
- 我的程序为什么在2000下不能发送数据
- 缩放应该怎样做?谁有代码?
- 我的问题很多,但都很简单的,分数吗,也适当的给了
- 谁能拿这200分,很烫手的哦
- 请问我用cgi程序如何输出.gif格式的图片给客户
- 在VC的tcp编程中,如果屏蔽某个ip地址
CreateMutex ReleaseMutex WaitForSingleObject
首先
在Udpproc里面,可以对buffer1~buffer4进行写;
然而对Dataproc来说,它的一个线程只能对其中一个buffer进行处理,但Dataproc只有一个函数体,如果是临界区的话,不只是对其中的一个buffer进行同步的吗?
我的意思相当于,如果在Dataproc中用指针传递buffer,那么如果我在Udpproc中进行buffer写的时候,相应的Dataproc的buffer数据是否也会同时改变?
每次对任何一个buffer的访问,都通过代理类来访问,
代理类中可以这样实现:
if(WaitForSingleObject(m_hMutex,INFINITE)==WAIT_OBJECT_0)
{
//.... access data
ReleaseMutex(m_hMutex);
}
MFC的就这样:
m_Mutex.Lock();
// access data
m_Mutex.Unlock();在代理类构造函数中调用CreateMutex来创建m_hMutex
这样你的dataproc的声明可以大概改为
dataproc(DataProxy * pProxy)
{
pProxy->ReadData();
}udpproc()
{
DataProxy proxy[4];
proxy1[1]->WriteData();
}