任务描述:将服务器主对话框的链表数据通过不同的客户端线程发送出去。
具体描述如下:
主对话框中有一个消息链表list<DataBuf*> m_List;该消息链表不断增加中。
服务器端原来已经创建了多个客户端线程,主要用来接收从客户端过来的数据:
线程定义如下:
hThread = (HANDLE)_beginthreadex(NULL,0,SocketThreadProc,this, CREATE_SUSPENDED, &uiThreadId);
UINT WINAPI CSocketComm::SocketThreadProc(LPVOID pParam)
{
while( TRUE )
{
....
res = recv( s, (LPSTR)lpBuffer, len, 0);
}
我现在想将服务器主对话框的链表数据发送到各个客户端,目前是这样做的:
在主对话框中有一个函数从链表头开始读取节点信息,并发送出去
void MainDlg::aaa()
{
DataBuf *pDataBuf =m_List.front();
res = send( s, (LPCSTR)pDataBuf, len1, 0);
}
这样的话,所有的消息都是通过主线程来发送,会带来效率问题,我又不想重新创建新线程来处理发送操作。所以我希望通过原来创建的客户端接收线程来发送这些数据,并且不太影响原来的recv操作,在主线程中目前只是知道原来创建的客户端线程句柄HANDLE hThread;,不知道该怎么写才好,多谢。
具体描述如下:
主对话框中有一个消息链表list<DataBuf*> m_List;该消息链表不断增加中。
服务器端原来已经创建了多个客户端线程,主要用来接收从客户端过来的数据:
线程定义如下:
hThread = (HANDLE)_beginthreadex(NULL,0,SocketThreadProc,this, CREATE_SUSPENDED, &uiThreadId);
UINT WINAPI CSocketComm::SocketThreadProc(LPVOID pParam)
{
while( TRUE )
{
....
res = recv( s, (LPSTR)lpBuffer, len, 0);
}
我现在想将服务器主对话框的链表数据发送到各个客户端,目前是这样做的:
在主对话框中有一个函数从链表头开始读取节点信息,并发送出去
void MainDlg::aaa()
{
DataBuf *pDataBuf =m_List.front();
res = send( s, (LPCSTR)pDataBuf, len1, 0);
}
这样的话,所有的消息都是通过主线程来发送,会带来效率问题,我又不想重新创建新线程来处理发送操作。所以我希望通过原来创建的客户端接收线程来发送这些数据,并且不太影响原来的recv操作,在主线程中目前只是知道原来创建的客户端线程句柄HANDLE hThread;,不知道该怎么写才好,多谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货