AW: Delphi einfaches Multithread Beispiel.
Zitat:
Zeigt nur das der oft gebrauchte Rat "versuch es ..." nicht immer gut ist. Gruß K-H |
AW: Delphi einfaches Multithread Beispiel.
Multi-Threading ist in dieser Hinsicht um ein Vielfaches böswilliger als nicht initialisierte Variablen. Es wiegt dich teilweise über mehrere Jahre in Sicherheit und schlägt dann ganz unvermittelt aber erbarmungslos zu. Weil die relevante Code-Änderung dummerweise schon so lange zurückliegt, ist das oft ganz schwer herauszufinden.
|
AW: Delphi einfaches Multithread Beispiel.
Zitat:
|
AW: Delphi einfaches Multithread Beispiel.
Gut, dann lag ich ja richtig.
@Redeemer: danke für den Link. Schau ich mir bei Gelegenheit mal genauer an! :thumb: |
AW: Delphi einfaches Multithread Beispiel.
habe mir nun https://www.youtube.com/watch?v=WOc89TF8l-8 angesehen.
Wie kann ich den thread löschen ? |
AW: Delphi einfaches Multithread Beispiel.
@p80286
Ja, es ist schon recht schwer zwei Threads fast zur selben Zeit auf die selbe Speicheradresse zugreifen zu lassen, womit es auch schonmal jahrelang gut gehn "kann", vor allem da in Delphi standardmäßig alle Variablen absichtlich gut ausgerichtet sind. OK, im Prnzip hat der RAM "grundsätzlich" nur Adressleitung, womit es unmöglich wäre genau gleichtzeitig zuzugreifen, aber fangen DualChanel an (zwei Adressleitungen) oder DoubleDataRate (DDR) wo zwei Zugriffe auf einer Leidung liegen (einer bei steigender Flanke und der andere bei Fallender) .......... Und wenn wir es uns jetzt noch einfach machen und annehmen, dass Speicherzugriffe immer genau auf 4 Byte ausgerichtet sind und du einen Integer zwischen zwei Zugriffspunkten positionierst, dann sind es zwei einzelne Zugriffe, die dann noch entsprechen maskiert, verschoben und kombiniert werden. Zitat:
Hier ist die Chance gleich ein Vielfaches höher, das Threads sich dabei überschbeiden. > Wert aus RAM in Register kopieren > hochrechnen > und den Wert wieder zurück in den RAM kopieren Dafür gibt es das LOCK, wo dann ein Speicherbereich für andere Kerne gesperrt wird. Bei MultiThread mit mehreren Kernen mag das noch einfach sein, sowas innerhalb eines Chips/Prozessors zu behandeln. PS: Vergesst nicht, dass früher auch nicht alles in der CPU drin war, sondern alles einzelne Funktionseinheiten/Chips die sich dann noch unterhalten müssten. (in Smartphons, Tablets, Schlepptops und vor allem MiniPCs sind CPU, FPU, NorthBridge, SouthBridge, GPIO, Speichercontroller, ... oft nur noch Eins) Aber schlimmer wird es dann auch noch bei MultiCPU, also mehrere Kerne in mehreren Chips auf vielleicht auch noch mehreren verbundenen Boards. Oder ganz modern, verteilte Rechenleitung über mehreren Rechenzentren. In guten Cloudlösungen kannst Problemlos dein Programm in China laufen lassen und es mittendrin und ohne Unterbrechung nach Russland verschieben, in ein anderes Rechenzentrum deines Anbieters. |
AW: Delphi einfaches Multithread Beispiel.
Task = Thread+
Vielleicht besser erstmal klein anfangen, also direkt Threads. Mit Tasks (Fiber im Windows-Jargon) wird es noch spaßiger, da es Arbeitseinheiten sind, die wiederum in einem/mehreren Threads verarbeitet werden. Man könnte Tasks sogar im Hauptthread ausführen lassen, womit es in der Programmierung wie MultiThread aussähe, aber eigentlich SingleThread wäre. :stupid: |
AW: Delphi einfaches Multithread Beispiel.
@himitsu
Ich hab meine ersten Parallelschritte auf einer Einschubkarte mit T800 gemacht. Da war unser liebstes Wort "Deadlock" der hatte ein Speicherschutzkonzept das einen Anfänger in den Wahnsinn treiben konnte. Einziger Vorteil: du hast gelernt dich zu beschränken. Ich hab nur geflucht nd die Karte nach einem halben Jahr versenkt. Heute zehre ih immer noch von den damaligen Erfahrungen..... Gruß K-H |
AW: Delphi einfaches Multithread Beispiel.
Zitat:
|
AW: Delphi einfaches Multithread Beispiel.
Den Thread würde ich nicht löschen wollen. Ich empfinde ihn als gutes Tutorial, wie man hier gemeinsam zu der Lösung eines Problems kommen könnte, nebst sinnvoller Nebenschauplätze.
Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz