AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit gleichzeitigem Zugriff auf Variablen

Ein Thema von I love Delphi · begonnen am 7. Sep 2010 · letzter Beitrag vom 8. Sep 2010
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Probleme mit gleichzeitigem Zugriff auf Variablen

  Alt 8. Sep 2010, 00:11
öh, wozu gibt es denn Delphi-Referenz durchsuchenTCriticalSection
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Probleme mit gleichzeitigem Zugriff auf Variablen

  Alt 8. Sep 2010, 06:48
Gleichzeitig lesend ist oftmals kein Problem (kommt aber auf die Variabel an, denn gleichzeitig einen Stream nutzen ist keine gute Idee).

Sobald man aber gleichzeitig Schreibend oder Schreibend+Lesend zugreifen will, müßte man sowieso absichern.

WinAPI > TRTLCriticalSection/RTL_CRITICAL_SECTION + MSDN-Library durchsuchenEnterCriticalSection
Delphi-CL (SyncObjs) > Delphi-Referenz durchsuchenTCriticalSection
Delphi-CL (SysUtils) > Delphi-Referenz durchsuchenTSimpleRWSync
Delphi-CL (SysUtils) > Delphi-Referenz durchsuchenTMultiReadExclusiveWriteSynchronizer

TSimpleRWSync kann man eigentlich vergessen, da es eigentlich nur eine CriticalSection enthält, aber falls man wenigstens seinen Code aufräumen will und Schreib-/Lesevorgänge entsprechende kennzeichnen will, dann ... nja, dann kann man es doch schonmal nutzen.

TMultiReadExclusiveWriteSynchronizer sollte vorallem Vorteile besitzen, wenn man sehr oft lesend zugreift und nur selten schreibend.
> Mehrere gleichzeitige Lesevorgänge werden erlaubt und bei einem Schreibzugriff wird alles geblockt.
> Aber dieses sollte man natürlich nur nutzen, wenn gleichzeitige Lesevorgänge kein Problem darstellen.

Und falls man ein bissl schreibfaul ist oder sich TMultiReadExclusiveWriteSynchronizer nicht merken kann ... Delphi-Referenz durchsuchenTMREWSync.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Probleme mit gleichzeitigem Zugriff auf Variablen

  Alt 8. Sep 2010, 07:55
Wird hier überhaupt mit Threads gearbeitet? Im ersten Beitrag steht nichts davon. Und heißt gleichzeitig eventuell gemeinsam?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
I love Delphi

Registriert seit: 6. Nov 2007
68 Beiträge
 
#4

AW: Probleme mit gleichzeitigem Zugriff auf Variablen

  Alt 8. Sep 2010, 22:26
Hallo,
zuerst mal die gute Nachricht: Ich habe nun die TMREW-Klasse verwendet -> Problem gelöst !

Vielen Dank also an Euch; Ihr seid echt spitze!

Viele Grüße,
I Love Delphi

P.S.: Nur nochmal so am Rande: Eigentlich dachte ich nicht das OnIdle() als eigener Thread arbeitet, da das Problem aber offensichtlich am gleichzeitigem Zugriff lag, muss es sich wohl um einen extra Thread handeln, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Probleme mit gleichzeitigem Zugriff auf Variablen

  Alt 8. Sep 2010, 23:06
Nein. OnIdle wird nur ausgelöst, wenn keine anderen Nachrichten zu verarbeiten sind. Da wird kein separater Thread erzeugt. Ich gehe mal davon aus, dass mit unnötigen globalen Variablen gearbeitet wurde.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:27 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