Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Ehrlich gesagt klingt mir das ganze Beispiel ziemlich merkwürdig. Was genau macht es für einen Sinn, mehrere Threads auf die selbe COM1 Schnittstelle schreiben zu lassen? Spontan würd ich jedenfalls mal sagen, dass die Verwendung von Threads hier von vorn herein fehlgeleitet ist...
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Dann würde ich jedem davon eine Klasse übergeben, die die Zugriffe auf das Gerät kapselt.Stell dir vor du schreibst eine Applikation in der mehrere Threads auf ein Gerät zugreifen das über RS232/COM1 am Hostrechner angeschlossen ist.
Halte ich für einen ganz schlechten Entwurf, wenn die Threads das selbst machen.Die Threads öffnen ab und zu mal COM1 senden was raus und schließen COM1 wieder.
Ich? Nein, ich ganz sicher nicht. Meine Lösung steht oben.Um zu verhindern das es beim öffnen von COM1 kracht schachtelst du die Zugriffe in eine CS.
Jeder gute Entwickler würde das nicht machen. Sorry, Eure Künste in allen Ehren, aber ich finde das noch immer einen sehr sehr schlechten Entwurf. Faulheit war noch nie ein gutes Argument, um irgendwas global zu deklarieren.Bei zwei Threads übergebe ich die CS vielleicht noch als Pointer an die Threads einzeln. Bei 30 Threads möchte ich den Entwickler sehen der die CS nicht global deklariert.
Weil es sicherer ist, sich besser testen lässt, sich besser erweitern und wiederverwenden lässt. Außerdem vermeidet es Code-Duplikation.Nenne mir einen vernünftigen Grund die CS irgend wo zu verbergen und via Zeiger an alle Threads einzeln zu übergeben außer "Weil man es so macht ..." !
Weil es sicherer ist, sich besser testen lässt, sich besser erweitern und wiederverwenden lässt. Außerdem vermeidet es Code-Duplikation.
Weil es sicherer ist, sich besser testen lässt, sich besser erweitern und wiederverwenden lässt. Außerdem vermeidet es Code-Duplikation.
Ach Cobold ... das ist doch genau das pauschale Lehrbuch bla bla was ich mit "weil man es so macht ..." meinte!
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Weil es sicherer ist, sich besser testen lässt, sich besser erweitern und wiederverwenden lässt. Außerdem vermeidet es Code-Duplikation.
Ach Cobold ... das ist doch genau das pauschale Lehrbuch bla bla was ich mit "weil man es so macht ..." meinte!
Weil es sicherer ist, sich besser testen lässt, sich besser erweitern und wiederverwenden lässt. Außerdem vermeidet es Code-Duplikation.
Ach Cobold ... das ist doch genau das pauschale Lehrbuch bla bla was ich mit "weil man es so macht ..." meinte!
Nein, die Aussage stammt aus meiner eigenen Erfahrung heraus. Und merkwürdigerweise stimmt das mit *guten* Lehrbuchmeinungen überein. Aber is schon klar, ich liege komplett falsch und Du liegst genau richtig. Man sollte globale Variablen benutzen, gerade wenn man sonst so viele Parameter an so vielen Stellen übergeben müsste und zu faul dazu ist... Und wenn man's kapseln will, macht man am besten gleich ein Singleton draus. Schon klar, schon klar.
Nur mal was zum Nachdenken: Vielleicht hat es einen Grund, wieso diese Dinge in allen guten Lehrbüchern stehen!? Kann es sein, dass du einfach alles, was so in Lehrbüchern steht, pauschal ablehnst?
Man sollte als Programmierer niemals das Denken aufgeben und sich nur an Vorgaben klammern. Es spielen ja viele Faktoren mit rein, die die gewählten Mittel evtl. beeinflussen. Und nur wegen bestimmter Richtlinien, immer alles genau nach diesem Konzept zu arbeiten, ist nicht unbedingt der richtige Weg. Aber man sollte nicht vergessen, dass es Gründe gibt, warum bspw. goto eher verpönt ist und sollte sich vor dessen Verwendung schon die Frage stellen, ob es sich nicht mit einfachen Mitteln besser lösen lässt. Aber hat man darüber nachgedacht und hat begründet, warum man hier auf dieses Code-Design zurückgreift, dann spricht nichts dagegen. Gerade natürlich, wenn man möglichst wiederverwendbaren Code schreiben will, sollte man aber evtl. doch ein paar Stunden Mehraufwand für klares Code-Design aufwenden.
Aber lieber sagt man Anfängern klar, was die gängige Meinung dazu ist und dass sie etwas nicht verwenden sollen, damit umso klarer wird, dass man sich vor der Verwendung eben wirklich Gedanken machen sollte.
Multithreading:
und immernoch ist der Zweck mehrerer Threads nicht ganz klar
warum wird die Verarbeitung parallelisiert? was wird da denn (im Groben) verarbeitet?
Gegenfrage: Verwendet ihr bei euch automatisierte Test, wie Unit-Tests?
Werbeanzeige