C#多线程同用一个全局变量,如何保持每个线程的变量不会被别的线程把值覆盖掉
6个回答
展开全部
如果是全局变量,而各个线程又都要能读写,而且不能被别的线程覆盖掉,那只能是加锁,
lock(全局变量)
{
doSomeThing();
}
但是这样会影响多线程的并发,如果是私有变量就不存在这个问题了,
得看你具体要求做什么了
lock(全局变量)
{
doSomeThing();
}
但是这样会影响多线程的并发,如果是私有变量就不存在这个问题了,
得看你具体要求做什么了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把变量声明在各自的线程函数中就可以了。
如果是全局变量,各个线程都会去读写的,怎么能保证不会被覆盖呢。
如果只在初始化时被赋值,以后不可能会去写的字段话,可以使用readonly标记。
如果是全局变量,各个线程都会去读写的,怎么能保证不会被覆盖呢。
如果只在初始化时被赋值,以后不可能会去写的字段话,可以使用readonly标记。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
仅供参考:
1. 可以在类里面声明一个静态的全局变量。
public static object obj=引用类型;
2.在每个方法体内,声明各自的局部变量。
3.加上Lock锁,可以确保当前线程操作的时候,别的线程无法操作
1. 可以在类里面声明一个静态的全局变量。
public static object obj=引用类型;
2.在每个方法体内,声明各自的局部变量。
3.加上Lock锁,可以确保当前线程操作的时候,别的线程无法操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
lock(对象){
代码
}
代码
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询