我目前正在开发一个多线程项目。主要用于学习目的。我在这个项目中的部分是编写一个服务器应用程序。
但是我到了这样一个地步,即整个变量锁定有点令人困惑,因为我不知道它是如何工作的,以及我必须在何时/何地使用它。
可以说我有一个class ClientHandler
包含一个List<Client> clientList
.
ClientHandler
有一个ClientList
返回的属性clientList
:
private List<Client> clientList;
public List<Client> ClientList
{
get { lock (lockObject) return clientList; }
set { lock (lockObject) clientList = value; }
}
NetworkHandler
运行一秒钟Thread
,适用于 this List<>
。
在这个网络Thread
中,检索到的数据在使用时List<>
被另一个锁定。
我的问题是这种锁定是如何工作的。
如果我在网络中(与object
lock
List<>
Thread
object
ClientHandler
它是线程安全的吗?所以一般来说,如果你lock
是一个带有任何变量的变量object
,它是否会被其他试图访问它的人锁定?
我只是想确保List<>
在另一个Thread
.