Meilleure correspondance en C # avec Java ReentrantLock et Condition?

Autre question multilingue: quelqu’un peut-il me dire quelle construction de threading C # correspond le mieux aux classes Java ReentrantLock et Condition? ReentrantLock a les méthodes lockInterruptibly () et unlock (), tandis que Condition a les méthodes signal () et wait (). C’est cette combinaison que j’aimerais pouvoir conserver dans le code C # – ou quelque chose de similaire … Merci d’avance.

Je pense que vous recherchez la classe Monitor statique. I permet l’acquisition de mutex bloquant et non bloquant , ainsi que les opérations de variable de condition . (Ils les appellent Pulse , PulseAll et Wait plutôt que de signaler et d’attendre).

La classe ReaderWriterLock mériterait également d’être explorée . Ceci est similaire à ReentrantReadWriteLock en Java.

DISCLAIMER : Je ne connais pas ces classes Java, je me lance dans le noir ici.

En C #, vous avez une instruction de lock (je pense que c’est quelque chose comme l’instruction synchronized de Java) qui peut verrouiller n’importe quel object. J’imagine que l’utilisation de cette instruction ou que Monitor.Enter(obj) et Monitor.Exit(obj) serait un peu comme ReentrantLock.

Il existe deux classes appelées ManualResetEvent et AutoResetEvent . Ces classes ont une méthode Wait et une méthode Set , qui, je suppose, sont comme le signal de condition et attendent. La différence entre ces deux classes est qu’un ManualResetEvent rest défini (ne bloque plus personne) et doit être Reset . Et AutoResetEvent est – comme son nom l’indique – réinitialisé automatiquement.