Die beste Übereinstimmung in C # mit Java ReentrantLock and Condition?

8

Eine weitere sprachübergreifende Frage: Kann mir jemand sagen, welche C # Threading-Konstrukte den Java ReentrantLock- und Condition-Klassen am besten entsprechen? ReentrantLock verfügt über die Methoden lockInterruptibly () und unlock (), während Condition über die Methoden signal () und await () verfügt. Es ist diese Kombination, die ich gerne im C # -Code erhalten möchte - oder etwas Ähnliches ... Vielen Dank im Voraus.

    
Paul Morrison 05.03.2009, 20:30
quelle

3 Antworten

8

Ich denke, wonach Sie suchen, ist die statische Monitor -Klasse . Ich erlaube Blockierung und nicht blockierende Mutex-Übernahme sowie Bedingung Variable Operationen. (Sie nennen sie Pulse , PulseAll und Warten Sie anstatt zu signalisieren und zu warten.

    
Ben S 05.03.2009, 20:52
quelle
1

Die Klasse ReaderWriterLock wäre auch einen Blick wert. Dies ist vergleichbar mit ReentrantReadWriteLock in Java.

    
Taylor Leese 31.07.2009 06:46
quelle
0

DISCLAIMER : Ich kenne diese Java-Klassen nicht, ich mache hier einen Stich in die Dunkelheit.

In C # haben Sie eine lock -Anweisung (ich denke, das ist etwas wie %% pro_%% -Anweisung von Java), die für jedes Objekt sperren kann. Ich nehme an, diese Anweisung zu verwenden, oder synchronized und Monitor.Enter(obj) wäre ein bisschen wie ReentrantLock.

Es gibt zwei Klassen namens Monitor.Exit(obj) und ManualResetEvent . Diese Klassen haben eine AutoResetEvent -Methode und eine Wait -Methode, die wie das Condition-Signal aussieht und wartet. Der Unterschied zwischen diesen beiden Klassen ist, dass ein Set gesetzt bleibt (niemand mehr blockiert) und muss ManualResetEvent sein. Und Reset wird - wie der Name schon sagt - automatisch zurückgesetzt.

    
configurator 05.03.2009 20:55
quelle

Tags und Links