最近做一个东西,要求读取8个串口的数据并解码绘图显示,同时保存在一个文件里。我在主线程里开了8个线程,分别接受8个串口的数据,累计1秒的数据就解码,想把解码后的数据传递给主线程,同时发送消息,让主线程来绘图。我在主线程里定义了公共变量m_data[Com_Index][3][512]用来存储解码后的数据,子线程不是可以访问公共变量吗?但是调试运行时总是出现AV错误。请问大虾们,像我这样的情况,子线程通过什么方法向主线程传递数据比较好呢?
谢谢大家啦!兄弟分不多,多包涵啊。
谢谢大家啦!兄弟分不多,多包涵啊。
解决方案 »
- 在字符串中插入换行
- 如何把一个access的表拷到另一个access里,不要用一条条记录写的方法
- 改框架背景色
- CDaoRecordset.movenext()的一个简单问题
- 在加入List View控件时,出现找不到。请问怎么回事?如图
- 消息传递问题。在线等1
- 请教:怎样做一个单例的本地服务器程序?
- 基于对话框的MFC程序怎样取得命令行参数?
- BITMAPV5HEADER' : undeclared identifier 为啥呢?
- win2k 的注册表被管理员禁用,我以管理身份登录却找不到解禁的入口,请那位大虾告之!!
- 在消息处理中lparam和wParam有什么区别
- 急!!!如何将一个工程中的对话框原样的复制到另一个工程中去?!!
可以,但多线程访问同一变量,要进行读写操作的话,就必须同步。你可以给主线程发自定义消息,也可以使用WM_COPYDATA
CRITICAL_SECTION
InitCriticalSection
EnterCriticalSection
LeaveCriticalSection
CloseHandle
也可以使用 CCriticalSection 类,使用 Lock 和 Unlock 来控制互斥
OpenMutex
ReleaseMutex也可以使用CMutex类,使用Lock和Unlock来控制互斥。ps:空气一定很郁闷……
在定义一个定时器1秒工作一次进行数据处理。至于你用不了公共变量你去看一下createthread怎么用
的就知道了
另外,想要计时,8个线程用一个CreatEvent,还是分别给每个线程开一个事件?
这个有点不解,楼上的兄弟能否解释一下