Threads synchronisieren/steuern



  • Hallo,
    also ich starte heraus aus der main() Funktion 3 Threads mit jeweils der gleichen Funktion (nur die Parameter sind anders) .
    Jetzt sollen die 3 Threads aber genau gleichzeitig gestartet werden und synchron ablaufen. Wie kann ich das bewerkstelligen ? Habe bisher nur mit Critical Sections gearbeitet aber ich denke mal das ist nicht dafür geeignet.
    Und dann Suche ich nach einer Möglichkeit Informationen zwischen den Threads und dem "Hauptthread" (main Funktion) auszutauschen ? Was ist da die beste möglichkeit, Mutexe oder was ?

    Danke schonmal für euere Antworten 🙂 .



  • Warum sollten keine critical_sections dafür geeignet sein?

    Also das erzeugen der Threads, sowie die dauer der erzeugung ist natürlich stark
    Prozessabhängig.

    Vlt. ist es aber einfachsten zwei Events zu erstellen.

    Du startest die Threads. Jeder Thread wartet nach eintritt in die ThreadProc auf
    das erste Event. Wenn Du alle Threads erstellt hast, setzt du das Event und die Threads
    beginnen zu Arbeiten.

    Innerhalb der Threads fragst Du immer wieder nach dem Status des zweiten Events.
    Wenn das gesetzt ist, werden die Threads beendet.

    ----------------
    Ich hatte es aber anders gelöst.
    Ich bastelte mir (weil es schnell gehen sollte) eine Struktur mit einer Critical_Section. (oder interlockexchange, ist relativ egal)..
    Private member sind ein member aus bool, welcher aus dem Thread gesetzt wird, wenn
    dieser gestartet ist.
    Ein weiteres bool, das aus der sync-function das dem thread mitteilt das es zeit
    ist seine aufgabe zu erledigen und noch eines um den thread mitzuteilen
    das es zum ende kommen soll.
    Die drei member werden über globale setter und getter member gesetzt, bzw gelesen und über die CS bzw. IXC threadsafe gemacht...

    grüße


Anmelden zum Antworten