AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TThread.Synchronize prophylaktisch verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

TThread.Synchronize prophylaktisch verwenden

Ein Thema von bernau · begonnen am 5. Mär 2025 · letzter Beitrag vom 6. Mär 2025
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.306 Beiträge
 
Delphi 12 Athens
 
#11

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 12:44
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 12:54
wenn Thread.Synchronize nicht innerhalb eines Threads aufgerufen wird sondern im Hauptthread.
Kannst Du testen mit:

if Windows.GetCurrentThreadId = MainThreadID then

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.301 Beiträge
 
Delphi 12 Athens
 
#13

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 13:13
wenn Thread.Synchronize nicht innerhalb eines Threads aufgerufen wird sondern im Hauptthread.
if Windows.GetCurrentThreadId = MainThreadID then
Mit dieser Abfrage bin ich aber Plattformabhängig (Windows).

Aber wie ich schon gelernt habe, kontrolliert Thread.Synchronize selber, ob er sich im Mainthread befindet.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.306 Beiträge
 
Delphi 12 Athens
 
#14

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 13:45
Vieles in der Windows.pas ist inzwischen auch für andere Platformen verfügbar.

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.837 Beiträge
 
Delphi 12 Athens
 
#15

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 13:47
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, ...).
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 17:32
Mit dieser Abfrage bin ich aber Plattformabhängig (Windows).
Seit wann machst Du FMX?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.039 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#17

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 5. Mär 2025, 18:08
FWIW GetCurrentThreadId für "nicht-Windows" ist definiert in Posix.Pthread.pas
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.301 Beiträge
 
Delphi 12 Athens
 
#18

AW: TThread.Synchronize prophylaktisch verwenden

  Alt 6. Mär 2025, 08:58
Mit dieser Abfrage bin ich aber Plattformabhängig (Windows).
Seit wann machst Du FMX?
Erst mal die diversen Bibliotheken vorbereiten und alles was nichts mit der GUI zu tun hat plattformunabhängig machen.

Ist noch ein weiter Weg. Kennst du ja
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 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 by Thomas Breitkreuz