1. WINCE7开发,.基于Net 3.5, C#
2. 串口通信的数据量比较大,所以想把UI刷新单独在另一个刷新频率较低的线程中进行;(数据频率为 500Hz, UI 刷新频率为20Hz)
3. 这样串口线程需要将值赋予全局变量,UI线程需要读取全局变量的值,
这种情况下,这两个线程需要进行同步吗?
目前不同步的情况下,初步测试了下感觉也没出什么大问题,不知道会不会造成异常?
------解决思路----------------------
串口速率决定了数据量级无法很高.
------解决思路----------------------
UI如果不是通过异步线程读取全局变量,我认为无需同步。
------解决思路----------------------
要看你读取什么类型
如果是基本类型(int,float之类的),那没问题。
如果是集合的元素(比如List),那读写还是需要加lock的
------解决思路----------------------
单独一个数值的话不需要同步,不过最好用 volatile 修饰,保证读取到最新的值。
------解决思路----------------------
单独的数值不需要同步,因为只有一个写线程,而单独数值的写可以认为是原子的,当然,要是结构什么的,如果操作不能被视为原子的,就必须加锁了,防止读到更新一般的数据
------解决思路----------------------
不知道。
编程以测试为准。如果没有想好测试,就没有必要扯到什么特定的理论上。如果说要怎么怎么,必定要以能够拿出测试用例来重现问题为准。如果暂时连测试都写不出来,那么就没有必要画蛇添足去改什么代码。