Hallo zusammen.
Ich habe mehrere Codeblöcke, nennen wir sie BlockA, BlockB und BlockC.
In alle dürfen so viele Threads rein wie wollen.
Nun hab ich einen Weiteren BlockX. Wenn hier ein Tread reinkommt, dann darf in keinem der anderen Blöcke ein Thread sein.
Ich könnte jetzt natürlich die drei Blöcke A, B und C mit drei verschiedenen Mutex (was ist eigentlich der plural von Mutex?) schützen. Und BlockX verwendet alle über ein dreifach verschafteltes synchronized. Aber dann kann in den Blöcken jeweils nur ein Thread, was eine zimliche Spaßbremse wäre...
Was ich bräuchte ist sowas wie ein "synchronized_read_only". Gibts ihrgendetwas in die Richtung? Wie könnte ich das umsetzten?
lg
Stahlkocher
Ich habe mehrere Codeblöcke, nennen wir sie BlockA, BlockB und BlockC.
In alle dürfen so viele Threads rein wie wollen.
Nun hab ich einen Weiteren BlockX. Wenn hier ein Tread reinkommt, dann darf in keinem der anderen Blöcke ein Thread sein.
Ich könnte jetzt natürlich die drei Blöcke A, B und C mit drei verschiedenen Mutex (was ist eigentlich der plural von Mutex?) schützen. Und BlockX verwendet alle über ein dreifach verschafteltes synchronized. Aber dann kann in den Blöcken jeweils nur ein Thread, was eine zimliche Spaßbremse wäre...
Was ich bräuchte ist sowas wie ein "synchronized_read_only". Gibts ihrgendetwas in die Richtung? Wie könnte ich das umsetzten?
lg
Stahlkocher
Java:
public void functionA() {
doSomething();
synchronized(MutexA, read_only) {
doSomething();
}
doSomething();
}
public void functionB() {
doSomething();
synchronized(MutexB, read_only) {
doSomething();
}
doSomething();
}
public void functionC() {
doSomething();
synchronized(MutexC, read_only) {
doSomething();
}
doSomething();
}
public void functionX() {
doSomething();
synchronized(MutexA) {
synchronized(MutexB) {
synchronized(MutexC) {
doSomethingDirty();
}
}
}
doSomething();
}