C#多线程同用一个全局变量,如何保持每个线程的变量不会被别的线程把值覆盖掉

如题所述

1、我们在程序顶部写上线程的引入命名空间

2、然后我们就可以正常创建线程等操作。

3、接着就可以判断状态,只有线程在执行才开始。

4、然后就可以判断线程暂停的时间。

5、接着就可以利用线程的About方法进行终止。

6、并给出相应的是即可成功终止线程。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-06
如果是全局变量,而各个线程又都要能读写,而且不能被别的线程覆盖掉,那只能是加锁,
lock(全局变量)
{
doSomeThing();
}
但是这样会影响多线程的并发,如果是私有变量就不存在这个问题了,
得看你具体要求做什么了本回答被网友采纳
第2个回答  2012-12-18
把变量声明在各自的线程函数中就可以了。
如果是全局变量,各个线程都会去读写的,怎么能保证不会被覆盖呢。
如果只在初始化时被赋值,以后不可能会去写的字段话,可以使用readonly标记。
第3个回答  2012-12-18
仅供参考:
1. 可以在类里面声明一个静态的全局变量。
public static object obj=引用类型;

2.在每个方法体内,声明各自的局部变量。

3.加上Lock锁,可以确保当前线程操作的时候,别的线程无法操作
第4个回答  2012-12-18
lock(对象){
代码
}

C#多线程同用一个全局变量,如何保持每个线程的变量不会被别的线程把值...
HashTable,每个线程用key往自己的value里面写东西,外界通过key访问每个线程写的东西,同理,dataTable也行啊,只要用标识区分开不同的row就可以了,或是每个线程一个dataTable,都放到dataSet中,通过表名就取到了

...线程调用同一个方法,方法的变量是公有变量,怎样进行方法的调用使各...
在方法中进行变量访问时加入锁。简单的使用lock,或是根据实际情况使用读写锁。然后建议设置变量(应该是字段吧)为私有。外部需要访问的话使用只读属性进行访问。 追问 已经加了锁,但是在这个线程没有运行完时,又开始了另一个线程,是不是会影响另一个线程的变量赋值啊? 追答 一个线程锁上后,其它线程访问的时候会...

C#多线程怎么锁定全局变量?
只要加上一下代码就可以了:public static object locker = new object();\/\/添加一个对象作为锁 就是在有修改的时候加上lock lock (locker)\/\/锁 { \/*添加过程*\/ dictionary.Add("...", DateTime.Now); } lock (locker)\/\/锁 { \/*删除过程*\/ dictionary.Remove("..."); } ...

c#多个线程同时操作一个全局变量,将结果显示到不同的文本框,用加什么控...
不是很理解你的意思,简单按我的理解给你一个回答吧。全局变量是引用类型么?如果引用类型就需要加锁,防止并发访问。方法:定义一个空对象,用来加锁对象 private static object _syncObject=new object();在需要被访问的全局变量当中加锁 private object _myVariable = new object();public object My...

VC多线程访问同一全局变量的问题
WaitForSingleObject(pFrameInQueue->m_mutex,INFINITE);ReleaseMutex(pFrameInQueue->m_mutex); 需要成对的出现.你在if判断里边释放一次 但是如果if条件不成立,你就没有调用释放.这样的结果就是互斥量mutex被锁定,其他线程无法调用.在2个if判断外加上释放mutex的语句再试一试 ...

C# 几个线程同时调用一个方法会出问题吗?
看你的方法与全局变量或者某一对象有没有关系, 如果有, 那么结果肯定是错的, 如果没有全局变量和对象, 只是处理返回计算结果的话, 那么没有问题

C# 多线程问题
设置全局变量,这个不可取,在多线程中,如果只有一层这样的线程,还可控,如果层数多了,又是加又是减的,根本控制不了。最后出问题都不知道怎么分析,多线程在分析问题时,有些问题还可重现,有些问题十次能重现一次就不错了。也在做这方面的研究,有时间可以交流一下,看看你们的设计。

C#如何在一个方法里面停止另外一个方法的执行(都在一个类里面)
多线程? 只能在一个方法里把其他的子线程中断。要不然你就只能在方法里访问一些全局变量,通过这些变量的值来 控制要不要停止当前的方法。比如:方法1中,不断访问 bool1 这个布尔型变量,当bool1的值为true就退出。 要停止方法1 时,就把bool1的值设为 true MSDN 上 演示引发异常的任务取消的基本...

C# 关于局部变量的性能问题
用传引用会更好些,全局变量会降低封装性,因此尽量少用全局变量。你可以这样写:private void Check(ref Rect RRR){ \/\/以下省略 }

C++线程更新变量问题
首先,你要多个线程使用一个变量,将其声明为volatile类型。其次,你这什么开发工具?工程什么类型?再次,你要“监听”某全局变量,可以在线程中使用循环方式 while(退出线程标志){ if(变量值值改变了){ 调用你的函数 } Sleep(10);\/\/腾出一点空闲 } “或者每隔一段时间刷新变量,运线程函数”这句...

相似回答