J'ai un verrou dans mon code.
J'ai deux threads en cours d'exécution en même temps. Comment puis-je savoir si un thread verrouille cet objet?Comment puis-je savoir si un objet est verrouillé? C#
private readonly object _lockObject = new Object();
// Both methods running
public void Method1()
{
if(certainCriteria)
{
lock(_lockObject)
{
//doWork;
}
}
}
// Both methods running
public void Method2()
{
if(isLocked?(_lockObject))
{
//doWork;
}
}
Quelqu'un at-il obtenu le isLocked? méthode?
Merci d'avance!
@Jon: Yaow est trop rapide, yaaw est (se lit mieux si vous pouvez gérer un accent de pays noir). C'était ce que j'allais suggérer avec une énorme mise en garde: «Cela fonctionne sur la base du« nous savons comment fonctionne la serrure ». – AnthonyWJones
Je ne suis pas particulièrement dérangé par le fait que cela dépend de savoir comment fonctionne la serrure - ce n'est pas comme si ça allait changer. C'est juste que c'est complètement faux. J'ose dire qu'il y a * quelques * situations où c'est utile, mais probablement moins que les endroits où il est réellement utilisé! –
Salut à nouveau Jon! J'implémente un BufferManager. Fondamentalement, il a une pile de tampons. Quand un thread pop() s la pile et il est vide - je veux que tous les threads attendent sur leur pop suivante() alors qu'un thread remplit la pile. Une fois rempli - tous les autres threads pour continuer à poping. Je ne suis pas sûr quant aux mécanismes de verrouillage de C# bien! – divinci