• 7300阅读
  • 4回复

互斥变量访问 [复制链接]

上一主题 下一主题
离线帅坤
 
只看楼主 倒序阅读 楼主  发表于: 2010-06-17
一共有2个线程,readThread和revThread。均访问output.txt文件。
revThread用来将串口接收到的数据存入output.txt中,每1ms对串口进行读取并存储一次。
readThread用来处理output.txt中的信息,并显示出来,每2ms读取一次output.txt文件。

这两个我线程单独调试均正常。但现在联合到一起就不好用了。revThread线程可以正常读串口,可以将读到的数据存入output.txt文件中。但是,readThread线程总出现问题:由于最开始output.txt文件是空的,我是想,串口数据一进来就存储并显示,但是只能存储却显示不出来。但是如果将程序终止,然后再次运行,使用这个已经有了数据的output.txt的文件,就可以显示了。但显示的内容是原有的,不是最新的。

这个问题不知道怎么解决了?是因为output.txt是互斥变量的原因吗?还是读output.txt文件的read函数有什么问题啊?
离线xtfllbl

只看该作者 1楼 发表于: 2010-06-17
你这个1ms,2ms---->是不是时间间隔太短的原因,看着没什么问题。
上海欢迎您
离线20044454
只看该作者 2楼 发表于: 2010-06-17
有几个问题不明白:
1:在第一个线程里面,你存储文件过程中,你把文件关闭了吗?如果没有关闭线程2没有法处理吧,
2:你存储文件时追加还是重写?,
3:如果追加你第二个线程读的是整个文本还是最近2MS存储内容?
   如果是追加 在整个文本数据时间长了怕有影响,如果是最近2ms的存储内容如何定位?
4::如果是重写,那么2MS就是线程1就写了2次,第一次就被冲掉了
让我做一个Qt的大牛!!!!
离线帅坤
只看该作者 3楼 发表于: 2010-06-17
回 1楼(xtfllbl) 的帖子
试过了,不是,谢谢了!
离线帅坤
只看该作者 4楼 发表于: 2010-06-17
回 2楼(20044454) 的帖子
谢谢了
是你说的第一个问题的原因,我没有关闭文件。
正好,还有问题想请教一下:
我是想做成追加的那种,现在是重写。不知道怎么定位追加的那部分数据,就是你说的第三个问题。
快速回复
限100 字节
 
上一个 下一个