采用全局变量进行多线程的之间的通讯时的对变量同时操作出现的问题?

xiejinwang 2004-08-06 01:38:23
我的程序实现的是辅助线程进行串口的数据的收发,工作者线程负责界面上数据的显示,线程之间数据的传递采用全局变量进行,程序运行时多次出现对话框“程序错误”只能关闭。我个人认为可能是两个线程同时对一个全局变量操作造成的。请高手帮忙分析一下原因。
...全文
93 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
oyljerry 2004-08-19
临界区,互斥都可以
回复
badguy2002 2004-08-19
书上就是说,当一个线程正在读取共享缓冲区时,另一个线程又正在向该缓冲区写数据,,那么程序就可能出现错误。
~~~~~~~~~~~~~~~~~~~~~~
个人觉得错误只是由于不同步导致的读取数据是错误的或者是无效的,而一般来说,即使不同步,也不会出现你上面所描叙的程序错误的,所以应该是其他方面的问题
回复
DentistryDoctor 2004-08-19
加临界区保护缓冲区。
回复
xiejinwang 2004-08-06
请问怎样解决这种问题呢?
回复
xiejinwang 2004-08-06
书上就是说,当一个线程正在读取共享缓冲区时,另一个线程又正在向该缓冲区写数据,,那么程序就可能出现错误。
回复
xiejinwang 2004-08-06
刚看了看书,原来这就是线程同步的问题啊。让各位见笑了,小弟明白了,看来只能通过一个标志位将对某一变量的同时操作错开了。
小弟还想问问,假如两个线程只是同时读某一变量的话,会发生错误吗?
回复
carbon107 2004-08-06
但是一个是读,一个是写啊,不会是这个地方的原因吧
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-06 01:38
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……