我想创建这个类的多个实例.
public class Worker
{
private object _lockObject;
private Thread _workerThread;
private string _name;
public Worker(object lockObject, string name)
{
_name = name;
_lockObject = lockObject;
_workerThread = new Thread(new ThreadStart(DoWork));
_workerThread.Start();
}
private void DoWork()
{
while(true)
{
lock(_lockObject)
{
Console.WriteLine(_name + "Doing Work");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将同一个锁对象传递给该类的多个实例,那么一个类实例中的锁会导致另一个等待该锁的类实例是否空闲?
static void Main()
{
private readonly object sharedLockObject = new object();
Worker a = new Worker(sharedLockObject,"a");
Worker b = new Worker(sharedLockObject,"b");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
我认为在上面的例子中,Workers永远不会是:Console.WriteLine(_name +"Doing Work"); 同时?
我只是想要一些确认,因为我不确定lock()是否会锁定引用或引用的对象.
谢谢!
Gra*_*meF 14
是的,object是一个引用类型,因此您传递对同一对象的引用,以便每个Worker使用相同的对象.该对象用于锁定,而不是引用.
| 归档时间: |
|
| 查看次数: |
5372 次 |
| 最近记录: |