mfc多线程异步问题,有类似阻塞队列的实现吗?

mayfan11 2014-02-03 07:33:48
rt,java中为了快速响应。调度线程将数据写入阻塞队列后直接返回,由工作线程读取阻塞队列完成耗时工作。mfc中有类似的实现么,是否是线程安全的?新人求解?
...全文
918 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayfan11 2014-02-07
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
在工作线程中创建一个作业线程,作业线程完成耗时的工作(比如等待远程服务器的响应),作业线程完成作业后,通过某种方式通知工作线程---作业已经完成。作业线程可以完成作业后销毁,或者进入一个循环等待新的作业,这由你自己逻辑决定
我的意思就是作业线程和工作线程中间的数据交换方式有无java中blockqueue类似的实现,实现我楼上说的效果。比如有名管道阻塞读写实现,在退出时怎么办,不写个数据就阻塞住了,只能terminal线程,只能造个特殊的结束数据用于结束;又比如有名管道的非阻塞实现,忙等待吃cpu效率不高。纯c++和java中我都是用blockqueue实现处理,我想问下vc++/mfc中有封装好的实现方式么,流行的多线程数据交互模型是什么,要自己实现还是有现成封装呢?
mayfan11 2014-02-07
  • 打赏
  • 举报
回复
引用 2 楼 RobertBaker 的回复:
PostThreadMessage 就行了,百度,
PostThreadMessage是消息队列的方式实现,用于数据处理的话能实现阻塞的同步效果么,类似java中的blockqueue,解决生产者消费者问题时,当我将生产出来的数据扔进blockqueue中立刻返回,当blockqueue满(比如消费者太少)时阻塞住生产者线程,当消费者线程消费后blockqueue不再阻塞,生产者线程继续工作
mayfan11 2014-02-07
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
线程同步,搞一个公共的queue
就是这个意思,vc/mfc中有类似java里blockqueue的实现么,都要自己写一个?
worldy 2014-02-05
  • 打赏
  • 举报
回复
引用 楼主 mayfan11 的回复:
rt,java中为了快速响应。调度线程将数据写入阻塞队列后直接返回,由工作线程读取阻塞队列完成耗时工作。mfc中有类似的实现么,是否是线程安全的?新人求解?
在工作线程中创建一个作业线程,作业线程完成耗时的工作(比如等待远程服务器的响应),作业线程完成作业后,通过某种方式通知工作线程---作业已经完成。作业线程可以完成作业后销毁,或者进入一个循环等待新的作业,这由你自己逻辑决定
encoderlee 2014-02-05
  • 打赏
  • 举报
回复
你说的这个是线程池吧。 可以自己实现,也可以在网上找一些现成的类库来用,也可以使用windows线程池。 这个和MFC没关系,MFC是开发图形界面的类库,相当于java.swing。
LiuYinChina 2014-02-04
  • 打赏
  • 举报
回复
PostThreadMessage 就行了,百度,
oyljerry 2014-02-03
  • 打赏
  • 举报
回复
线程同步,搞一个公共的queue

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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