Frage zu "critical section" bzw Threadsafe

godock

Grünschnabel
Hallo,

ich habe ein Programm, dass in mehreren Threads Daten in einen gemeinsam verwendeten Buffer schreibt.

Damit das ganze threadsafe wird, habe den Code-Abschnitt als critical section definiert

Code:
    EnterCriticalSection(&m_cs); 

    addElementToIsrExtractBuffer(listElement);
    emuPidBuffer[*pLogical_chan].iElementCount++;
    emuPidBuffer[*pLogical_chan].pCurrentListElement = listElement.pListElementData + EMU_LISTELEMENT_SIZE;

    runIRQHook(0x14);  //Aufruf isrLinearExtract 

    LeaveCriticalSection(&m_cs);
Die Wahrscheinlichkeit, dass zwei Threads gleichzeitig auf den Buffer zugreifen, ist jedoch sehr gering, sodas ich keinen Unterschied merke, ob ich mit critical section arbeite oder nicht.

meine Frage ist nun: Wie kann ich testen, ob das Ganze threadsafe ist?

Gruß
godock
 
Du könntest die Ausführungszeit in der CS künstlich verlängern. Damit steigt die Wahrscheinlichkeit, daß 2 Threads gleichzeitig darauf zugreifen. Dann kanst Du noch Ausgaben machen, wen dei CS betreten und verlassen wird, evtl. mit einer Thread-ID.
 
Zurück