请教一下,以以下阻塞方式多线程传输过程中,怎样实现暂停和停止呢?

neil_cq 2005-08-11 04:53:54
各个传输线程都调用以下代码进行传输
while(len>0)
{
len2=len>nTransSize?nTransSize:len;
myFile.Read(m_buf, len2);
int aa=sendn(TrsfSocket,m_buf,len2);
if(aa<0)
break;
}
我曾在这个循环中加了暂停标志位,但是传输中,还是没能暂停下来,传输继续在执行
while(len>0)
{
if (bPause) {
Sleep(500);
continue;
}
len2=len>nTransSize?nTransSize:len;
myFile.Read(m_buf, len2);
int aa=sendn(TrsfSocket,m_buf,len2);
if(aa<0)
break;
}
...全文
93 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
njchf 2005-08-11
建议楼主先debug一下,看看到底有没有执行到Sleep(500),如果没有先查这个原因吧,你这样用虽然暂停不了线程,但至少不会再发生读写操作,因为不管用那种方法,一般都是由主控线程通知工作线程暂停的
回复
neil_cq 2005-08-11
该怎样做呢?能不能说得详细点啊?
回复
thisisll 2005-08-11
一开始bPause是真的话
永远都停不了
回复
njchf 2005-08-11
你要暂停可以wait一下,然后等待主线程notify唤醒,不然只能500ms,你感觉不出来的
另外调试跟踪一下看看有没有执行到sleep(500)函数
回复
neil_cq 2005-08-11
这是暂停啊,BREAK或者RETURN是停止,continue之后,只是在不断地SLEEP,并没有数据发送出去啊
回复
njchf 2005-08-11
if (bPause) {
Sleep(500);
continue;
}
你都continue了,怎么停啊,要么len = 0 要么return或break才行啊
回复
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2005-08-11 04:53
社区公告
暂无公告