Quiero hacer varias instancias de esta clase.C# ¿Pueden las clases múltiples BLOQUEAR el mismo objeto utilizando múltiples referencias?
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");
}
}
}
}
Si paso el mismo objeto de bloqueo para múltiples instancias de la clase, será un bloqueo en una instancia de clase resultar en la otra instancia de clase de espera en que el bloqueo de ser libre?
static void Main()
{
private readonly object sharedLockObject = new object();
Worker a = new Worker(sharedLockObject,"a");
Worker b = new Worker(sharedLockObject,"b");
Console.ReadLine();
}
Creo que en el caso anterior, los trabajadores nunca habrá: Console.WriteLine (_name + "que hace el trabajo"); al mismo tiempo?
Solo me gustaría obtener alguna confirmación, ya que no estoy seguro de si el bloqueo() bloqueará la referencia o el objeto al que se hace referencia.
Gracias!
gracias "El objeto se utiliza para bloquear, no la referencia" Me encantaría encontrarlo en la especificación de C# – divinci
"La instrucción de bloqueo obtiene el bloqueo de exclusión mutua para un objeto determinado" - http://msdn.microsoft. com/en-us/library/aa664735 (VS.71) .aspx – GraemeF
'El objeto se usa para bloquear, no la referencia. ¿Qué significa? – Alexandre