多线程中对同一变量操作问题

时间:2021-03-27 18:10:03
如何在2个线程中对同一个变量(int型、字符串)进行不断访问、修改,需要进行同步吗,如果不同步的话,我知道对一块内存操作是会产生错误的,但是对一个int/cstring变量不知道会不会出问题,如果要同步的话,万一有很多变量,那不是需要很多同步信号了吗?

11 个解决方案

#1


最好不要存在侥幸心理:)
程序跑的快,人就累点,人懒点,程序跑的惨点。

#2


这个可以用临界区来实现同步,如果是太多了,也可以看能不能设置一个线程的优先级高于另一个

#3


这个应该需要同步   可以把相关的变量弄成一个组  公用一个锁  

#4


需要同步,不然你可能很难保证你读取的是你对应写的数据...

#5


这个不同步不会崩溃
但是不能保证读取的正确性

#6


1 就你目前的编程语言及个人能力而言,必须同步。
2 在使用汇编语言等情况下,对INT类型,在个别情况下不需要同步。
总结:无论从兼容性,可扩展性,可读性,稳定性哪个方面来说,你都要去做同步。

#7


这个可以有?
这个必须有!

#8


引用 1 楼 m_tornado 的回复:
最好不要存在侥幸心理:)
程序跑的快,人就累点,人懒点,程序跑的惨点。
 
深有体会

#9


运行不会出错,但结果可能会和预期的不一样

#10


楼主可以考虑一下线程局部存储(TLS):_declspec(thread) DWORD dwTest;

#11


必须同步。很多变量,可以考虑用一个函数专门用来同步,所有的访问都通过该函数,而同步工作由该函数处理

#1


最好不要存在侥幸心理:)
程序跑的快,人就累点,人懒点,程序跑的惨点。

#2


这个可以用临界区来实现同步,如果是太多了,也可以看能不能设置一个线程的优先级高于另一个

#3


这个应该需要同步   可以把相关的变量弄成一个组  公用一个锁  

#4


需要同步,不然你可能很难保证你读取的是你对应写的数据...

#5


这个不同步不会崩溃
但是不能保证读取的正确性

#6


1 就你目前的编程语言及个人能力而言,必须同步。
2 在使用汇编语言等情况下,对INT类型,在个别情况下不需要同步。
总结:无论从兼容性,可扩展性,可读性,稳定性哪个方面来说,你都要去做同步。

#7


这个可以有?
这个必须有!

#8


引用 1 楼 m_tornado 的回复:
最好不要存在侥幸心理:)
程序跑的快,人就累点,人懒点,程序跑的惨点。
 
深有体会

#9


运行不会出错,但结果可能会和预期的不一样

#10


楼主可以考虑一下线程局部存储(TLS):_declspec(thread) DWORD dwTest;

#11


必须同步。很多变量,可以考虑用一个函数专门用来同步,所有的访问都通过该函数,而同步工作由该函数处理