请教一下,以以下阻塞方式多线程传输过程中,怎样实现暂停和停止呢?
各个传输线程都调用以下代码进行传输
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;
}
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;
}
...全文
相关推荐
2012最新java面试大全--很有帮助的
同步和异步线程之间如何相互协作?同步线程会阻塞当前线程直至任务完成;异步线程则不会阻塞,可以通过回调函数、事件、信号量等方式来实现线程间通信。### 45. Android如何实现实时通话状态监测?
java面试题
- `stop()`和`suspend()`方法已被废弃,建议使用更安全的方式停止线程。#### 26. sleep()和wait()的区别- `sleep()`使当前线程暂停指定的时间,不会释放锁。
C#异步文件传输
最后,**暂停和继续**功能增加了用户对文件传输的控制。实现这一功能,我们需要维护一个标志来指示传输状态,并在异步任务中检查这个标志。
多线程Socket
这种方式简单且易于实现,但可能导致线程长时间等待,降低了系统效率。举个例子,假设我们有一个服务器程序,它使用多线程处理客户端的连接请求。
一种非阻塞式串行口通讯源代码
传统的串口通信通常采用阻塞式方法,即在发送或接收数据时,程序会暂停执行,等待传输完成,这种方式在处理大量数据或高并发场景下可能导致效率低下。非阻塞式串行口通讯则采取了不同的策略。


网络编程
