c#中多线程和变量的问题

时间:2021-09-05 18:07:31
现在我想用多个线程去执行同一块代码片断,
请问如何能让每个线程都拥有一个自己的私有的变量而不相互干扰呢?
求教 达人。

8 个解决方案

#1


如果 这个变量 是在 线程函数(方法)内部 是不会影响的,因为 每个线程 都有这个变量的副本。

如果非要 将变量 作为成员变量 可以 每次 执行 线程函数的时候 实例化一个新的。

#2


线程去执行同一块代码片断
线程各自拥有局部变量副本,共享进程的全局变量

#3


在线程过程体内定义的所有变量都是其私有变量,互不干扰

thread1 = new Thread(new ThreadStart(thProc));
thread2 = new Thread(new ThreadStart(thProc));
thread3 = new Thread(new ThreadStart(thProc));
...

private void thProc()
{
   int i,j,k;
   object a,b,c
   //这里面定义的所有东东都互不干扰
}

#4


没有用到静态变量的话是不会互相影响..

#5


其实就是同时调用同一个方法而已,不会影响的,除了公共的变量和静态的变量.反到是如果同时访问同一个对象的时候的资源问题值得研究.

#6


对于静态变量和类成员变量,需要采用互斥访问。
方法是在访问前加代码:
lock(this);

#7


把需要执行的代码完整的封装成一个 Class,必要的变量都声明为 Private 作为私有

#8


把这段代码封装成类,多个线程执行,互不影响啊,都有那些私有变量的副本

#1


如果 这个变量 是在 线程函数(方法)内部 是不会影响的,因为 每个线程 都有这个变量的副本。

如果非要 将变量 作为成员变量 可以 每次 执行 线程函数的时候 实例化一个新的。

#2


线程去执行同一块代码片断
线程各自拥有局部变量副本,共享进程的全局变量

#3


在线程过程体内定义的所有变量都是其私有变量,互不干扰

thread1 = new Thread(new ThreadStart(thProc));
thread2 = new Thread(new ThreadStart(thProc));
thread3 = new Thread(new ThreadStart(thProc));
...

private void thProc()
{
   int i,j,k;
   object a,b,c
   //这里面定义的所有东东都互不干扰
}

#4


没有用到静态变量的话是不会互相影响..

#5


其实就是同时调用同一个方法而已,不会影响的,除了公共的变量和静态的变量.反到是如果同时访问同一个对象的时候的资源问题值得研究.

#6


对于静态变量和类成员变量,需要采用互斥访问。
方法是在访问前加代码:
lock(this);

#7


把需要执行的代码完整的封装成一个 Class,必要的变量都声明为 Private 作为私有

#8


把这段代码封装成类,多个线程执行,互不影响啊,都有那些私有变量的副本