关于MFC 多线程编程的问题

xtfusljj 2016-09-28 03:08:17
我的程序大概分为两部分:
1. 从设备上面采集数据。
2.将采集的数据进行处理,画图。
因为数据处理比较多比较麻烦,我的想法是采集数据单独开个线程,然后处理数据开个线程。数据采集快速运行直到采完,数据处理可以慢慢来。
本人使用的是MFC,对多线程不太了解,但是又比较急,这种情况是不是开两个工作线程。
如果有人有类似的例子就更好了,万分感谢。
...全文
732 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2016-09-29
  • 打赏
  • 举报
回复
既然耗时,那就用线程处理,线程的基本流程大致如下: bool bRuning; DWORD threadEntry(LPVOID lpVoid) { while ( bRuning ) { ...;do yourself work here Sleep(1); } return 0; } BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); SECTURITY_ATTRIBUTE sa; memset( &sa, 0, sizeof(sa) ); sa.nLength = sizeof(sa); DWORD threadId; bRuning = true; HANDLE hThread = CreateThread(&sa, 0, (LPTHREAD_START_ROUTINE)theadEntry, (LPVOID)m_hWnd, &theadId); return TRUE; }
xtfusljj 2016-09-29
  • 打赏
  • 举报
回复
引用 5 楼 jszj 的回复:
通常来说,采集数据是需要一个线程的,而数据的处理要看实际情况,如果只是复杂但并不耗时的话,就没有必要开线程,如果是很耗时,那就要开线程了。 数据处理如果不耗时,则可以放在采集线程中来完成,也可以放入队列然后在主线程中处理(也可以向主窗口发送消息,在这个消息中处理处理数据) 如果是很耗时,则用单独的线程来处理,这个时候需要注意线程的同步问题,这是最需要注意的地方。 至于如何创建线程,最基本的是CreateThread(),去网上一搜一大把
对的 我的数据处理很耗时,因为很多矩阵操作,所以我不想影响到我的采集数据速度,所以一般这种情况的话 都是用多线程来解决的,或者有没有其他方法。
red-fly 2016-09-28
  • 打赏
  • 举报
回复
通常来说,采集数据是需要一个线程的,而数据的处理要看实际情况,如果只是复杂但并不耗时的话,就没有必要开线程,如果是很耗时,那就要开线程了。 数据处理如果不耗时,则可以放在采集线程中来完成,也可以放入队列然后在主线程中处理(也可以向主窗口发送消息,在这个消息中处理处理数据) 如果是很耗时,则用单独的线程来处理,这个时候需要注意线程的同步问题,这是最需要注意的地方。 至于如何创建线程,最基本的是CreateThread(),去网上一搜一大把
lx624909677 2016-09-28
  • 打赏
  • 举报
回复
A线程里去采集图像,然后A里面有需要处理的图像时,再开一个线程B,把图像传入到B线程里去处理
jyxuan94 2016-09-28
  • 打赏
  • 举报
回复
这样做肯定可以的,如果采集的信息分好几批的话就像版主说的那样放到队列中,关于队列http://www.cnblogs.com/mfryf/archive/2012/08/09/2629992.html记得上锁, 其实假如你数据采集快的话,而且处理不着急,其实一个线程也可以
oyljerry 2016-09-28
  • 打赏
  • 举报
回复
你的想法可以,只不过采集线程跟处理线程之间需要交换数据,可以用队列等来传递
我名字要很长 2016-09-28
  • 打赏
  • 举报
回复
多线程不难,例子网上有好多

15,473

社区成员

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

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