versch. Critical sections in versch. Instanzen...



  • Hi,

    ich versuch mal mein Problem zu umreißen.
    Also ich habe habe ein Klasse mit einer critical section als Attribut.

    class TMyClass
    {
        private:
            CRITICAL_SECTION CriSect;
        ...
    };
    

    Im Konstruktor der Klasse wird InitializeCriticalSection aufgerufen.
    Die Section soll dazu dienen Threads innerhalb einer Instanz der Klasse zu synchronisieren. Das Problem dabei ist, wenn ich eine weitere Instanz der Klasse erstelle, vermute ich, das dann die Threads der anderen Instanzen auch warten müssen. Das soll aber nicht so sein, weil die Instanzen miteinander gar nichts zu tun haben.

    Hat jemande ne Idee, wie ich das gelöst bekomme?

    Maffe

    PS: "Vermute ich" heisst, ich bin mir ziemlich sicher. Allerdings kann ich das nicht debuggen, weil einige Threads zeitempfindliche, externe Geräte steuern, die bei Unterbrechung gleich in einen Fehlerzustand wechseln.
    Wenn dem nicht so sein kann, warum auch immer, dann muss ich mich wohl nochmal auf die Suche begeben. Allerdings wüsste ich jetzt nicht, womit die Instanzen die critical sections auseinander halten können sollten.



  • Maffe001 schrieb:

    Also ich habe habe ein Klasse mit einer critical section als Attribut.

    class TMyClass
    {
        private:
            CRITICAL_SECTION CriSect;
        ...
    };
    

    Im Konstruktor der Klasse wird InitializeCriticalSection aufgerufen.
    Die Section soll dazu dienen Threads innerhalb einer Instanz der Klasse zu synchronisieren. Das Problem dabei ist, wenn ich eine weitere Instanz der Klasse erstelle, vermute ich, das dann die Threads der anderen Instanzen auch warten müssen. Das soll aber nicht so sein, weil die Instanzen miteinander gar nichts zu tun haben.

    Nein. Deine Vermutung ist falsch. Das "CriSect" ist ja eine member-Variable und somit innerhalb dieser Klasseninstanz eindeutig. Somit hat jede Instanz seine eigene Critical Section. Das Problem muss woanders liegen.



  • Das ging mir auch gerade auf. Als ich nochmal nachgelesen habe, wie CRITICAL_SECTION genau aussieht.
    Na gut, ich ziehe alles zurück und behaupte das Gegenteil. 😃


Log in to reply