多线程读写变量的问题
对于普通的变量integer类型和Cardinal这种,如果有两个线程,一个线程写,一个线程读,是否有可能造成异常? 是否需要互斥?
谢谢~
[解决办法]
添加临界区,如果不加限制肯定会造成读取的数据不争取。
[解决办法]
会,或者用临界,或者用InterlockedDecrement系列函数,做原子方式的增加减少
[解决办法]
请LZ参考 Delphi5开发人员指南 第13章关于多线程的。这一章全面介绍了线程、线程同步,另外有小例子,相信LZ在看书的过程中就能解决问题
[解决办法]
32位整数的读写,已经相当原子
但是理论上还是不能保证完全没问题(A线程写了一半就被B线程读走)
只是发生的概率估计会很低
最好还是加互斥之类的包含一下
[解决办法]
[解决办法]
[解决办法]
InterlockedDecrement最快
临界区速度中
互斥最慢,因为它是跨进程的