AGB  ·  Datenschutz  ·  Impressum  







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

Änderungen von Variablen synchronisieren

Ein Thema von Breager · begonnen am 17. Mär 2012 · letzter Beitrag vom 20. Mär 2012
Antwort Antwort
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#1

AW: Änderungen von Variablen synchronisieren

  Alt 19. Mär 2012, 21:53
Zitat von Sir Rufo:
Erklär doch mal, wofür du das MustLock in LockList und UnlockList jeweils veränderst. Das macht in meinen Augen keinen Sinn.
Wenn ich die CriticalSection über TMyList.Locklist starte, würde z.B. innerhalb von TMyList.Count ein erneuter Versuch, die CriticalSecion zu starten eine Ausführung des Codes in TMyList.Count blockieren.

Aus diesem Grund setze ich bei TMyList.Locklist MustLock:=False. Das bedeutet, dass ich z.B. innerhalb von Count keine CriticalSection mehr starten muss, da schon aktiv
IF MustLock then Lock Also wird der Code in Count ausgeführt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Änderungen von Variablen synchronisieren

  Alt 19. Mär 2012, 22:29
Ja, sowas hatte ich mir gedacht

Aber das ist überflüssig und verkompliziert die Sache unnötig.

Eine CriticalSection sorgt dafür, das innerhalb selbiger nur ein ThreadKontext aktiv ist.
Innerhalb dieses ThreadKontextes kann eine CS aber beliebig oft betreten werden.
Die CS muss aber auch genauso oft wieder verlassen werden damit diese wieder frei für einen anderen ThreadKontext ist.
Delphi-Quellcode:
FCS.Enter;
FCS.Enter;
  TuWas;
FCS.Leave;
FCS.Leave;
Diese Konstrukt funktioniert problemlos, denn wenn die CS betreten werden kann, dann funktioniert auch das zweite Betreten.
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
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#3

AW: Änderungen von Variablen synchronisieren

  Alt 19. Mär 2012, 22:40
Alles klar Danke, man lernt eben nie aus. Das Thema Threads wird mir noch die ein oder andere schlaflose Nacht bescheren (absolutes Neuland für mich)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Änderungen von Variablen synchronisieren

  Alt 19. Mär 2012, 22:54
Und das Try-Finally nicht vergessen, denn die CS muß eben unbedingt genau so oft verlassen/freigegeben werden, wie sie betreten/gesperrt wurde.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#5

AW: Änderungen von Variablen synchronisieren

  Alt 20. Mär 2012, 00:16
Zitat von himitsu:
Und das Try-Finally nicht vergessen, denn die CS muß eben unbedingt genau so oft verlassen/freigegeben werden, wie sie betreten/gesperrt wurde.
Ja, das habe ich jetzt konsequent in jeder Function und Procedure, wie beim Beispiel von Count, eingebaut:
Delphi-Quellcode:
Function TMyList.Count:Integer;
Begin
 lock;
 try
  Result:=MyList.Count;
 finally
  unlock;
 end;
End;
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Änderungen von Variablen synchronisieren

  Alt 20. Mär 2012, 06:27
Und das 'lock' bzw. 'unlock' sieht wie aus?
  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 16:32 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