AGB  ·  Datenschutz  ·  Impressum  







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

Threads synchronisieren?

Ein Thema von Borti · begonnen am 10. Feb 2005 · letzter Beitrag vom 10. Feb 2005
Antwort Antwort
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#1

Threads synchronisieren?

  Alt 10. Feb 2005, 08:23
Guten Morgen!
Mein Programm spaltet einen Nebenthread ab, der mit dem Hauptthread über eine Variable kommuniziert. (Nebenthread schreibt, Hauptthread liest von der Variablen)
Muss ich in diesem Fall Synchronisieren?
Gruß,
Borti
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Threads synchronisieren?

  Alt 10. Feb 2005, 08:38
Ja solltest du. Sonst könnte passieren, das dein Hauptthread die Variable liest während der Nebenthread gerade schreibt. Dadurch ist nicht gewährleistet, dass der Wert zum Lesezeitpunkt konsistent ist. Pack lesen und schreiben einfach in die selbe CriticalSection.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#3

Re: Threads synchronisieren?

  Alt 10. Feb 2005, 10:33
Es kommt auch immer ein Stück weit auf die Variable an (zB Integertypen oder komplexe Records). Bei ersterem würde ich sofort die Interlocked*-Funktionen benutzen, weil die einfach dafür gemacht sind. Ansonsten eine Criticalsection oder ein anderes Ausschlußobjekt.

Aber solange nicht mehrere Thread schreibend zugreifen, kann man in vielen Fällen komplett auf eine Synchronisation verzichten - es sei denn es handelt sich um Variablen die größer als <Integrale CPU-Bitzahl> oder getrennt (zB 4 einzelne Bit) sind.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: Threads synchronisieren?

  Alt 10. Feb 2005, 10:46
Zitat von Assarbad:
Aber solange nicht mehrere Thread schreibend zugreifen, kann man in vielen Fällen komplett auf eine Synchronisation verzichten - es sei denn es handelt sich um Variablen die größer als <Integrale CPU-Bitzahl> oder getrennt (zB 4 einzelne Bit) sind.
Selbst dann sollte man die entsprechenden Funktionen verwenden (sonst werden die Caches der CPUs u.U. nicht synchronisiert).
  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 14:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz