Threadkommunikation



  • Hi,

    habe folgende Aufgabenstellung:
    Ein Thread soll Meldungen in eine Log-Datei wegschreiben. Der Thread wartet also nur auf Nachrichten, beim Empfang schreibt er die Nachricht in eine Datei und wartet auf weitere Nachrichten... (also ein Logger-Thread)

    Dann gibt es andere Threads, die Nachrichten an die Logger-Thread versenden sollen...

    Da ich nur <= .NET 2.0 einsetzen kann, fallen Pipes wohl aus...
    ich denke da an WINDOWS-Messages... geht das?
    die Nachrichten-versender rufen also z.B. PostMessage() auf...
    wie sieht es dann konkret auf der Logger-Thread-Seite aus.....



  • Nimm eine Queue/Liste, ein AutoResetEvent und ein "lock"...



  • Jochen Kalmbach schrieb:

    Nimm eine Queue/Liste, ein AutoResetEvent und ein "lock"...

    ..d.h. die Nachrichten schreibe ich (treadübergreifend) in eine "Queue", mit "AutoResetEvent" und "lock" mache ich dann die Synchronisierung....?

    wollte eigentlich die Nutzung globaler Speicherbereiche vermeiden....



  • wollte eigentlich die Nutzung globaler Speicherbereiche vermeiden....

    Falls Du mit globaler Speicherbereich von verschiedenen Threads gemeinsam genutzer Speicher meinst: warum? Abhilfe könnte z.B. eine Socketverbindung sein. Aber eine gemeinsam genutzte Queue ist völlig ok - warum nicht? Das muss keine globale Variable sein!

    Falls Du mit globaler Speicherbereich von verschiedenen Threads gemeinsam genutze gloable Variablen meinst: Ja, unbedingt vermeiden.


Log in to reply