![]() |
AW: TThread.Synchronize prophylaktisch verwenden
Wenn ALLE Codes, welche auf das Gleiche zugreifen, im Hauptthread (bzw. immer nur im selben Thread) werkeln, dann wäre es quasi sicher, da immer nur Einer gleichzeitig kann.
Eine Alternative wären z.B. CriticalSections, damit auch zwischen mehreren Threads immer nur Einer kann. |
AW: TThread.Synchronize prophylaktisch verwenden
Zitat:
Delphi-Quellcode:
if Windows.GetCurrentThreadId = MainThreadID then
Mavarik :coder: |
AW: TThread.Synchronize prophylaktisch verwenden
Zitat:
Aber wie ich schon gelernt habe, kontrolliert Thread.Synchronize selber, ob er sich im Mainthread befindet. |
AW: TThread.Synchronize prophylaktisch verwenden
Vieles in der Windows.pas ist inzwischen auch für andere Platformen verfügbar.
Delphi-Quellcode:
,
if Windows.GetCurrentThreadId = TThread.CurrentThread.ThreadID then
aber TThread.Current, bzw. TThread.CurrentThread ist selbst schon irgendwie pervers, um damit nur auf die ID zureifen zu wollen. |
AW: TThread.Synchronize prophylaktisch verwenden
Du kannst dir auch TThread.Current bei der Zuweisung deiner Notifier merken und bei TThread.Synchronize statt nil übergeben. Das kommt auf deine Threadarchitektur an. Voraussetzung wäre ja, dass der andere Thread entsprechend lange existiert. Dann müsste das aber nicht der Hauptthread sein, den du mit nil ansprichst.
Threads kannst du wirklich auf sehr viele Arten verwenden. Wichtig ist, dass du einen Plan hast, wann welcher Thread gestartet und beendet wird, was in welchem Kontext ausgeführt werden muss, welcher Kontext wie lange lebt, und wer sich um die Beendigung deiner Threads kümmert. Teilweise wird dir das abgenommen (Tasks, PPL, anonyme Threads, ...), teilweise musst du das alles manuell machen (TThread, ...). |
AW: TThread.Synchronize prophylaktisch verwenden
Zitat:
|
AW: TThread.Synchronize prophylaktisch verwenden
FWIW
Delphi-Quellcode:
für "nicht-Windows" ist definiert in Posix.Pthread.pas
GetCurrentThreadId
|
AW: TThread.Synchronize prophylaktisch verwenden
Zitat:
Ist noch ein weiter Weg. Kennst du ja ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 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