Voglio rendere più istanze di questa classe.C# È possibile che più classi BLOCCA lo stesso oggetto utilizzando più riferimenti?
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");
}
}
}
}
Se mi passa lo stesso oggetto di blocco a più istanze della classe, sarà un blocco in un'istanza di classe comportare l'altra istanza di classe in attesa di quel blocco di essere liberi?
static void Main()
{
private readonly object sharedLockObject = new object();
Worker a = new Worker(sharedLockObject,"a");
Worker b = new Worker(sharedLockObject,"b");
Console.ReadLine();
}
penso che nel caso di cui sopra, i lavoratori saranno mai: Console.WriteLine (_name + "che fa lavoro"); allo stesso tempo?
Vorrei solo una conferma, poiché non sono sicuro se il blocco() bloccherà il riferimento o l'oggetto a cui si fa riferimento.
Grazie!
grazie "L'oggetto è utilizzato per il blocco, non il riferimento" piacerebbe trovarlo nella specifica C# – divinci
"L'istruzione di blocco ottiene il blocco di esclusione reciproca per un dato oggetto" - http://msdn.microsoft. it/it/us/library/aa664735 (VS.71) .aspx – GraemeF
'L'oggetto è utilizzato per il blocco, non il riferimento. Che cosa significa? – Alexandre