一个线程的问题

我看你有戏 2008-11-25 10:51:22

//这个是服务器端发数据包的线程
//是这样的,当m_lists有数据的时候,才进行发送数据,每隔300毫秒就要检测一下
//有没有人能改进一下,当m_lists有数据的时候,由外面的线程通知一下这个发送的线程,如何实现呢


DWORD WINAPI CCsrvSocket::SendDataThead(LPVOID lpParam)
{
CCsrvSocket *pSrvSocket = (CCsrvSocket *)lpParam;
if (pSrvSocket==NULL)
{
printf("发送数据线程开辟出错了\n");
return 0;
}
LPDATA lpdata,lp;
while (TRUE)
{
if (pSrvSocket->m_lists.IsEmpty()==false)
{
lpdata = pSrvSocket->m_lists.GetHeadPosition();
while(lpdata)
{
SendDataPage &tmp = pSrvSocket->m_lists.GetAt(lpdata);
pSrvSocket->SendData(tmp.socket,tmp.szBuffer,tmp.dwLen);
SAFE_DELETE(tmp.szBuffer);
lp = lpdata;
pSrvSocket->m_lists.GetNext(lpdata);

pSrvSocket->m_lists.RemoveAt(lp);
}
}
Sleep(300);
}

return 0 ;
}
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdjdyq 2008-11-25
  • 打赏
  • 举报
回复
http://blog.csdn.net/czzju/archive/2008/02/18/2102755.aspx你可以去看下这个线程池的实现,应该对你有帮助的
tdjdyq 2008-11-25
  • 打赏
  • 举报
回复
你可以用线程池实现啊
我看你有戏 2008-11-25
  • 打赏
  • 举报
回复
思路我也是清楚的

就是不知道代码如何实现

能否给给demo呢,谢谢了
qqwx_1986 2008-11-25
  • 打赏
  • 举报
回复
发送线程等待某个信号量,如果有了数据主线程就发信号给子线程,当数据发送完毕把信号量再设为无信号状态...

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧