日期:2014-05-19  浏览次数:20805 次

提问!!!多线程访问变量的安全问题!
多线程运行一段函数,代码里有几个变量,如果是全局变量,必须把全局变量封装到类里,然后在函数内部new,这样多线程操作变量就不会混淆
如果,这个函数里的是局部变量,那么是不是也不会混淆呢???

------解决方案--------------------
在对全局变量操作的时候加上同步锁就可以了。
------解决方案--------------------
帮LZ顶
------解决方案--------------------
如果你的这个变量是Class中的,而你不同线程的Class是独立申明的,当然不会了

------解决方案--------------------
局部变量一般是不会出现线程同步问题,
出现这样的问题是因为2个线程同时对一个变量进行操作,
局部变量一般是在线程内部,所以不需要加锁
------解决方案--------------------
先搞清楚线程冲突是什么。

线程冲突就是说,当A线程在使用某变量a的时候,B线程修改了变量a,这个时候A线程所使用的变量a的值就是不确定的,如果这个时候A在通过a的值运算得到一个结果,写回到a,就有可能覆盖掉线程B的结果,当然这只是线程冲突的一种表现形式。

不过从此我们可以知道,只有全局的、且会在多个线程中进行修改的操作,才会引起线程冲突。

局部变量每个线程都是独立的。

解决线程冲突一般都是加锁(当A线程在使用变量时,禁止线程B访问变量),而不是楼主说的那种复杂到我都听不懂的方法。
------解决方案--------------------
局部变量,不会混淆
------解决方案--------------------
貌似.NET中的静态变量都是线程安全的~
------解决方案--------------------
互斥锁