Sleep()/sleep() Probleme
-
Nein IMHO kann es nicht an den Prios liegen. Wenn Du schläfst müssen die Threads an die Reihe kommen. Die FRAge ist was die gerade tun? Evtl. hast DU EInfach ein Synchronisationsproblem mit Ressourcen. Verwendest Du SendMessage? Wenn ja dann hast Du dort ein Problem.
-
Ja, wir reden mit einem Treiber, und im debugview kann man sehen wie diese alle abgesendet werden. Was für ein Problem kann es den mit dem sendMessage geben?
Ich selber habe den Teil nicht geschrieben, aber ich kann ja mal schauen ob ich da was finde.
-
Wenn Du ein SendMessage auführst an ein Fenster, dass in einem anderen Thread liegt und dieser Thread nicht die MessageLoop ausführt, dann steht SendMessage bis die Nachricht abgeholt wird.
Da Dein MainThread ein Consolen Programm ist vermute ich mal nicht, dass dieses eine Messageloop hat, ansonsten wird diese natürlich durch den Sleep blockiert!
-
Nimmst Du alternativ
PostMessage
-
CodeFinder schrieb:
Nimmst Du alternativ
PostMessage
Was unter Umständen nicht geht, wenn die Daten in einem Puffer stehen, der eine begrenzte Lebenszeit hat...
Zudem muss man dann auch beachten, dass die Message Queue für PostMessage in der Größe begrenzt ist...
-
Jops, klar hängt vom Verwendungszweck ab...
-
Danke Leute,
hatte aber dummerweise nix damit zutun.
War eigene Dummheit. Hab für 2 verschiedene Threads nur eine CriticalSection gehabt. Und da ist es kollidiert. Kann man mit einem Debugger aber echt schlecht erkennen.
-
Nightstorm schrieb:
Danke Leute,
hatte aber dummerweise nix damit zutun.
War eigene Dummheit. Hab für 2 verschiedene Threads nur eine CriticalSection gehabt. Und da ist es kollidiert. Kann man mit einem Debugger aber echt schlecht erkennen.Doch kann man. Man kann im Debugger beide Threads anhalten und sehen wo sie stehen!
Zudem! Es ist doch korrekt für beide Threads nur eine Criticalsection zu haben, wenn es darum geht ein und den selben Bereich zu sichern!
Ganz verstehe ich das nicht!
-
1. Nein, ein Thread ist für die Devices, und der zweite für die IO´s
2. geht das auch mit dem Codeblocks? und welchen Befehl muss ich dann nutzen?
-
Nightstorm@home schrieb:
1. Nein, ein Thread ist für die Devices, und der zweite für die IO´s
Sorry aber irgendwie stehe ich auf dem Schlauch. Warum musst Du das in dieser Form gegeneinander sichern.
Nightstorm@home schrieb:
2. geht das auch mit dem Codeblocks? und welchen Befehl muss ich dann nutzen?
Was meinst Du damit "Codeblocks"?
Ich meinte im Debugger einfach "Break all" ausführen. Dann öffnest Du das Threads Fenster und machst überall mal einen Doppelklick! Und siche da anhand des Callstacks kannst Du wunderbar sehen, wer sich hier wie totblockt.
-
Er meint die "Code::Blocks" IDE - hab aber leider keine Ahnung ob die einen Debugger hat bzw. unterstützt der das kann.
-
Man kann den GNU Debugger mit Code::Blocks nutzen; also ja
.
-
@all Danke, für die Hilfe.
@Martin, ich habe für die Devices eine verkette Liste, und für die zu den Devices geschickten IO´s eine verkette Liste. Und die muss man nicht gegenseitig blocken. Ich hab sie aber gegenseitig geblockt, weil ich dummerweise die selbe CriticalSection für beide verwendet habe. Es war programmierer Faulheit.