Ik heb een class die door verschillende threads zeer veel gebruikt wordt. Het is van belang dat dit zo snel mogelijk gaat en dat methodes zoveel mogelijk parallel uitgevoerd kunnen worden.
Nou bevat deze class een resource welke gedeeld wordt door de methodes, bijvoorbeeld een bestand. Ik heb twee methodes die deze resource alleen lezen en 1 methode die de resource leest en schrijft:
Ik wil dat DoeLeesActie1 en DoeLeesActie2 parallel te gebruiken is door verschillende threads. Maar als DoeLeesEnSchrijfActie wordt uitgevoerd moeten de lees-acties wachten. Wordt er 1 van de 2 lees-acties uitgevoerd (of beide) dan moet de lees-en-schrijf-actie wachten.
Hoe los ik dit het beste op?
Nou bevat deze class een resource welke gedeeld wordt door de methodes, bijvoorbeeld een bestand. Ik heb twee methodes die deze resource alleen lezen en 1 methode die de resource leest en schrijft:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public class MijnKlasse { public void DoeLeesActie1 { //Gebruik gedeelde resource om te lezen } public void DoeLeesActie2 { //Gebruik ook gedeelde resource om te lezen } public void DoeLeesEnSchrijfActie { //Gebruik gedeelde resource om te lezen en te schrijven } } |
Ik wil dat DoeLeesActie1 en DoeLeesActie2 parallel te gebruiken is door verschillende threads. Maar als DoeLeesEnSchrijfActie wordt uitgevoerd moeten de lees-acties wachten. Wordt er 1 van de 2 lees-acties uitgevoerd (of beide) dan moet de lees-en-schrijf-actie wachten.
Hoe los ik dit het beste op?
"The shell stopped unexpectedly and Explorer.exe was restarted."