AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Synchronize unterbricht innerhalb einer CriticalSection
Thema durchsuchen
Ansicht
Themen-Optionen

Synchronize unterbricht innerhalb einer CriticalSection

Ein Thema von s.h.a.r.k · begonnen am 8. Okt 2008 · letzter Beitrag vom 9. Okt 2008
 
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Synchronize unterbricht innerhalb einer CriticalSection

  Alt 8. Okt 2008, 18:38
ich glaube, dass es die mischung macht weil dieses problem an sich ziemlich allgemein sein kann.

allgemeine (und hoffentlich bessere) fassung:
und zwar habe ich zwei threads, thread1 und thread2. von mir aus kann auch thread1 der hauptthread sein, spielt aber an sich keine rolle.
nun habe ich eine methode in thread1, welche public ist, d.h. auch von anderen threads aus aufrufbar sein soll. wenn ich diese methode betrete, dann tritt der thread, welcher diese ausführt in eine criticalsection ein und beim verlassen der methode gibt es diese wieder frei, also wie folgt:
Delphi-Quellcode:
procedure methode();
begin
  FCriticalSection.Enter();
  try
    { ... }
  finally
    FCriticalSection.Leave();
  end;
end;
nun rufe ich in thread2 die methode von thread1 auf, aber eben synchronisiert:
[delphi]{ irgendwo in thread2 }
Synchronize(Thread1.methode);[/delpih]
klar ist, dass in thread1 eine referenz auf thread2 liegt.

nun gibt es den fall, dass eben das synchronize in thread2 zeitlich so dumm aufgerufen wird, dass die sequentielle abarbeitung des codes in thread1 genau dann abbricht, wenn thread1 in der criticalsection ist, d.h. thread2 wartet darauf, dass thread1 die criticalsection wieder verlässt, was ja aber nicht gehen kann, da dieser ja "steht".

ich hoffe, ich habe mein problem nun besser beschrieben

btw: wenn ihr nun meint, dass dieses beispiel ja schwachsinn sei, dann kann ich auch gerne mein komplexeres problem, wie ich es im moment habe, darstellen. allerdings glaube ich nicht, dass ich dabei auf dem weg der besserung bin. es wird ein allgemeines problem bleiben, welches ich irgendwie umschiffen muss, wie mir scheint. die frage ist nur wie!?

da dieses problem im nachhinein an sich etwas klarer scheint, d.h. dieses problem eigentlich immer auftreten kann, da die struktur criticalsection dieses problem nicht umgeht, benötige ich wohl keine lösung dafür, da dies zu spezifisch wäre. soweit meine gedanken dazu
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
 


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 12:21 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