![]() |
Delphi-Version: 5
Criticalsections, globale Variablen und Mainthread
Hallo Delphifreunde!
Falls das Thema in diesem Forum schon erschöpfend behandelt wurde, bitte ich um Nachsicht, ich fand jedenfalls nichts. Daß man globale (i.S.v. unitinternen) Variablen, die von verschiedenen Threads aus angesprochen werden, wenigstens bei den Schreibzugriffen mit kritischen Abschnitten schützen muß, ist mir bekannt und wird von mir auch beachtet. Doch ist dieses Schützen der globalen Variablen auch schon im Mainthread, also dem Thread, in dem auch die VCL läuft, erforderlich? Das hatte ich nämlich bisher so nicht beachtet. Ich ahne es allmählich, daß dem so ist, denn "nicht threadsafe" liest man in diesem Forum ja an fast allen Ecken und Enden. Vielen Dank und Gruß Delphi-Laie |
AW: Criticalsections, globale Variablen und Mainthread
Der Mainthread ist ja auch ein Thread und es könnte Zugriffskonflikte mit einem nebenläufigen Thread geben.
Also musst Du Zugriffe schützen oder alle Zugriffe aus Threads über Synchronize durchführen. |
AW: Criticalsections, globale Variablen und Mainthread
Na, das habe ich doch richtig geahnt, vielen Dank für die rasche Antwort!
|
AW: Criticalsections, globale Variablen und Mainthread
Zitat:
|
AW: Criticalsections, globale Variablen und Mainthread
Zitat:
Zitat:
Wenn Du die globalen Variablen nur im Mainthread verwendest müssen die natürlich nicht geschützt werden. |
AW: Criticalsections, globale Variablen und Mainthread
Zitat:
Um das zu vermeiden gibt es die atomaren Funktionen, die die Werte in einem Rutsch schreiben und lesen ( ![]() Statt CriticalSections wäre TMonitor.Enter...TMonitor.Exit auf das Objekt, das die entsprechenden Felder enthält, besser. Das ist in der Regel deutlich schneller. Außerdem gibt es noch ![]() |
AW: Criticalsections, globale Variablen und Mainthread
Vielen Dank Euch beiden!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz