Problem:
Semaphoren blockieren unerwartet mein laufendes Programm
Situation:
ich habe mir eine Art Pipe gebastelt
ich erstelle 2 unbenannte Semaphoren:
S1(256) und S2(0)
dann habe ich 2 Methoden:
push(content) {
sem_wait(S1);
// füge content in pipe
sem_post(S2);
}
poll(*content) {
sem_wait(S2);
// hole content aus pipe
sem_post(S1);
}
diese Syntax sorgt dafür, dass genau 256 Plätze in der Pipe befüllbar sind und push blockiert wenn die Pipe voll ist bzw. poll blockiert, wenn die Pipe leer ist
Die unerwartete Blockade habe ich gedebuggt und herausgefunden, dass es im push, manchmal bei wait, manchmal beim post passiert, aber bisher immer wenn S1 auf 16 (vor dem wait) und S2 auf 240 ist
Hat jemand eine Idee?