Multithreading

Was ist Multithreading?

Grundsätzlich versteht man unter Multithreading das gleichzeitige Ablaufen und Bearbeiten verschiedener Prozesse.  Meistens wird es genutzt, um Prozesse zu beschleunigen und hohen Rechenaufwand zu vermeiden. In unserem Fall wenden wir es an, um unser Problem zu lösen – Antrieb und Radar gleichzeitig benutzen zu können, damit wir den Gegner bestmöglich verfolgen und angreifen können. Normalerweise kann man nämlich nicht verschiedene Methoden gleichzeitig laufen lassen, und somit könnte ebenfalls die gute und ständige Kommunikation zwischen den Mehtoden, die wir in dem Fall brauchen, nicht stattfinden.

Multithreading in unserem Beispiel

Nachdem wir den Sensor verbaut und eingestellt hatten, standen wir aber schon wieder vor einem neuen Problem – wie bekommen wir die ermittelten Daten von der Klasse in die Antriebsklasse, damit der Roboter weiß, wohin er fahren muss, während beide Programme weiterlaufen. Nach kurzer Recherche war stießen wir auf „Multithreading“, welches genau unseren Anforderungen zu entsprechen schien. Als nächstes hieß es dann lernen und verstehen, denn bisher kannte sich keiner der Gruppe mit Multithreading aus. Multithreading ist jedoch keine leichte Sache und wir haben stießen auf endlose Fehler. Der häufigste Fehler war „cannot convert static to non-static“. Um Multithreading zum laufen zu bringen, wollte das Programm von uns, dass wir die benötigten Methoden und Variablen auf „static“, bzw. Statisch stellen. Jedoch brauchten wir den „non-static“ Aspekt, denn die betroffenden und gebrauchten Variablen mussten sich nun mal während das Programm läuft verändern und diese Veränderungen musste anschließend der anderen Methode vermittelt werden. Durch diesen Fehler konnten wir nicht den Winkel um den sich das Radar gedreht hatte in die Main Methode hinzufügen, da das eine eine static Methode ist, das andere jedoch eine non-static Variabel. Jedoch konnten wir das eine nicht einfach auf non-static setzen oder das andere auf static ohne irgendetwas anderes damit kaputt zu machen.