如题:比如现有程序需要使用两个线程:A、B;
A线程处理完某一操作后会返回处理结果字符串strRes;然后继续处理,处理完仍返回strRes。如此往复直到结束。
B线程利用A处理的结果strRes来继续处理数据,一直到完全处理完A返回的全部字符串strRes为止。
请问这样的多线程应该怎么写?
应该使用信号量?临界区?还是其他什么? 给出一些思路的伪代码就可以。谢谢了!多线程
A线程处理完某一操作后会返回处理结果字符串strRes;然后继续处理,处理完仍返回strRes。如此往复直到结束。
B线程利用A处理的结果strRes来继续处理数据,一直到完全处理完A返回的全部字符串strRes为止。
请问这样的多线程应该怎么写?
应该使用信号量?临界区?还是其他什么? 给出一些思路的伪代码就可以。谢谢了!多线程
解决方案 »
- CImageList ::Add(HICON hIcon)
- 怎么用API函数查询域中用户的Global Group
- 做了兩個語言版本的string table,怎麽生成另一個語言版本的程序
- 如何在实现单击取消按钮后,返回到上一级的窗口?而不是返回到主窗口
- 程序退出时,~CString()报错
- 数据类型转换
- 请问如何通过IDispatch接口得到COM对象的名称?
- 关于CFrameWnd *Frame =new CFrameWnd ()
- 怎么使得有WS_EX_ACCEPTFILES风格的窗口在拖入文件的时候没有覆盖掉原来的内容??
- 在局域网内,要广播几十K(64K以下)的数据,用哪种技术最好?
- 快捷菜单问题
- MFC view 实现像word可以插入图片的功能,如何实现
B中通过队列接收数据,当队列为空且收到A线程结束消息时,B线程停止处理。
A线程
{
while(仍有数据待处理)
{
处理数据;
发送结果给B线程;
}
发送结束消息给B线程;
return 0;
}B:
A发送数据消息的处理函数
{
将消息放入队列;
}
A发送结束消息的处理函数
{
将结束标志位置为true;
}
B线程
{
while(队列不为空 || 结束标志位为false)
{
if(0 == 队列.size())
{
pop数据;
处理数据;
}
}
return 0;
}
俩线程不冲突,应该不需要临界量吧
一样的,queue本身也不是线程安全类型的。除非加锁,但是加锁又不太符合我的初衷。因为枷锁势必要导致在A线程处出现停顿的现象,但是我的A线程是连接硬件的,不能出现停顿。
一样的,queue本身也不是线程安全类型的。除非加锁,但是加锁又不太符合我的初衷。因为枷锁势必要导致在A线程处出现停顿的现象,但是我的A线程是连接硬件的,不能出现停顿。A线程不用queue,只在B中使用。A线程只负责发送自定义消息。把B线程弄成界面线程,在消息循环里处理,还不安全??
一样的,queue本身也不是线程安全类型的。除非加锁,但是加锁又不太符合我的初衷。因为枷锁势必要导致在A线程处出现停顿的现象,但是我的A线程是连接硬件的,不能出现停顿。A线程不用queue,只在B中使用。A线程只负责发送自定义消息。把B线程弄成界面线程,在消息循环里处理,还不安全??
这样的倒是可以,多谢了!