Synchronisation von Threads
-
Hallo zusammen,
ich bin ein Neuling in der C++ Programmierung, habe nur ein wenig Erfahrung mit Java. Nun habe ich als Aufgabe, eine Fräse anzusteuern, und zwar sollen die verschiedenen Achsen in eigenen Threads angesteuert werden. Nun erzeuge ich die Threads mit CreateThread().
Nun versuche ich die Threads dahingehend zu snchyronisieren, dass sie immer den gleichen Schritt machen, also bei z.B. 3 Schritten sich jeder Thread immer zeitgleich bei SChritt 1, 2 oder 3 aufhält. Da ich aber vorher nicht weiß, welche Thread zuerst seinen Teil abgearbeitet hat, weiß ich nicht, wie ich die synchronisieren soll. Ich hoffe, das war jetzt nicht zu ungenau und ihr könnt mir helfen.
-
1. Falsches Forum -> WinAPi
2. Ich meine das geht mit ENTER / CRITICALSECTION
oder so ähnlich ... google am besten mal danach ...Gruß Chris
-
einfacher würde es mit ganz normalen events gehen (CreateEvent, WaitForSingleObject bzw WaitForMultipleObject und CloseHandle am Ende)
-
einfacher würde es mit ganz normalen events gehen
Naja, dein Vorposter hat "ganz normale" Critical Sections genommen.
Ist beides WinAPI. Man muss halt von Fall zu Fall entscheiden, was sinnvoller ist.Gruss Simon
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also, ich weiß nicht, ob es sinnvoll ist für die drei Achsen x, y und z je ein Thread erstellt werden soll.
Letztendlich fehlen mir natürlich die Kentnisse über ganzen Rahmenbedingungen und Anforderungen dieses Projekts.Ich meine solange es eh nur bei den drei Achsen bleibt, ist es vermutlich sinnvoller und einfacher, alle drei Achsen in einem einzigen Thread zu steuern.
Z.B. in Form eines/r dreidimensionalen Vektors oder Matrix.Ansonsten, guck Dir die Links in http://www.c-plusplus.net/forum/viewtopic-var-t-is-186523-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html an, vielleicht helfen sie Dir weiter?
Martin
-
Naja, 3 Threads in der Art synchronisieren kann man z.B. mit einer "barrier".
Allerdings möchte ich das was Mmacher schon gesagt hat nochmal etwas stärker formulieren: 3 Threads für 3 Achsen = 3x Unfug. Lass die Steuerung für die Fräse in einem einzigen Thread laufen. Die Steuerung von einem evtl. vorhandenen User-Interface zu trennen ist IMO gut, aber die Steuerung selbst würde ich so einfach wie möglich halten. Ist schliesslich der Wichtigste Teil der ganzen Geschichte. Und 3 Achsen für 3 Threads ist sicher nichts was ich mir unter "einfach" vorstellen würde.
-
Das mit den 3 Threads habe ich mir auch anders überlegt. Es wird tatsächlich einen Thread geben, in dem einfach die Reihenfolge erstellt wird und einen anderen, der diese Befehle der Fräse mitteilt.
Lese grade die verlinkten Artikel und die scheinen meine Fragen auch erschöpfend zu beantworten. Danke dafür.