Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Timer, Threads oder ???


fit4net - Mo 07.03.05 18:41
Titel: Timer, Threads oder ???
Ich möchte folgendes Problem in den Griff bekommen, ich weiss aber nicht, was die beste Lösung dafür ist, folgendes:

Ich möchte gerne "variabel" mehrere Schleifendurchläufe (Repeat->Until, oder do while ...) programmieren. Diese Schleifendurchläufe schicken dann ständig bestimmte Werte an mein USB-Port. Diese muss ich per Button stoppen, aber auch wieder fortführen können. Das Problem liegt darin, da ich mehrere Schleifen gleichzeitig fahren möchte, soll man da mit mehreren Timern, Threads oder gar mit etwas anderem hantieren???
Welches ist die eleganteste Lösung dafür, weiterhin muss ich nämlich auch auf die Geschwindigkeit der Schleifendurchläufe, sowie auf bestimmte Parameter, die in der Schleife eine große Rolle spielen, einwirken können, dieses natürlich in Echtzeit, ohne dass das Hauptprogramm dadurch beeinflusst wird.

Wer kann mir da einen guten rat, oder vielleicht sogar einen kl. Quelltext zur Verfügung stellen????

Vielen dank schonmal im voraus.


Lossy eX - Di 08.03.05 09:44

Also Timer würde ich da auf keinen Fall empfehlen, da die Zeiten in der die Events ausgelöst werden mitunter stark varieren können. Und das soll ja auf keinen Fall so sein, wenn ich das richtig verstanden habe.
Ich würde da schon zu einem Thread greifen. Der kann dann ja mittels Sleep schlafen und evtl. ab und an mal abprüfen wie viel Zeit vergangen ist. Evtl kannst du ihm auch eine sehr hohe Priorität geben. Dann drängelt er sich auch vor anderen Anwendungen. (Von der Bearbeitung her)

Die Geschwindigkeiten der Schleifen und Parameter könntest du mittels Propertys der Threadklasse zuweise. Evtl müsstest du diese per Critical Section schützen aber das sind Details.

Zum Thema Qellcode kann ich dir meine Tutorial [http://www.dev-center.de/index.php?cat=tutorials&file=multithreading] anbieten.


Motzi - Di 08.03.05 15:39

Ich würde auch zu Threads raten.. eine weitere Alternative wären noch Suche im MSDN FIBERS, aber das ist schon sehr komplex, und wenn du dich nicht wirklich gut mit der Materie auskennst würd ich dringend davon abraten..!