AGB  ·  Datenschutz  ·  Impressum  







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

2 Fragen zu Threads

Ein Thema von kcx · begonnen am 1. Apr 2008 · letzter Beitrag vom 1. Apr 2008
Thema geschlossen
kcx

Registriert seit: 19. Feb 2008
44 Beiträge
 
#1

2 Fragen zu Threads

  Alt 1. Apr 2008, 17:39
Hallo,

Ich habe mal 2 kurze Fragen, im Umgang mit Threads.

1. Wenn ich mit mehreren Threads in eine Datei schreibe, sollte man das Beschreiben der Datei, also "WriteLn(Datei, 'text')" mit einer CriticalSection o.Ä schützen oder ist das unnötig?

2. Ich starte in einer Konsolenanwendung mehrere Threads und möchte jetzt, dass sich die Konsolenanwendung erst beendet, wenn alle Threads fertig sind. Bisher habe ich das mit einer global Boolean Variable gemacht und einfach "while bWorking do Sleep(1000)"; im Thread incrementiere ich dann eine Variable und wenn diese gleich der gestarteten Threads ist, wird "bWorking" auf "false" gesetzt, und die Anwendung kann sich beenden. Geht das auch besser, sodass die Anwendung auch noch reagiert, was bei "Sleep" ja nicht der Fall ist?

Danke
 
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: 2 Fragen zu Threads

  Alt 1. Apr 2008, 18:10
Hi!

Zitat von kcx:
1. Wenn ich mit mehreren Threads in eine Datei schreibe, sollte man das Beschreiben der Datei, also "WriteLn(Datei, 'text')" mit einer CriticalSection o.Ä schützen oder ist das unnötig?
Ja, Zugriffe auf gemeinsame Daten sollte man grundsätzlich synchronisieren.

Zitat von kcx:
2. Ich starte in einer Konsolenanwendung mehrere Threads und möchte jetzt, dass sich die Konsolenanwendung erst beendet, wenn alle Threads fertig sind. Bisher habe ich das mit einer global Boolean Variable gemacht und einfach "while bWorking do Sleep(1000)"; im Thread incrementiere ich dann eine Variable und wenn diese gleich der gestarteten Threads ist, wird "bWorking" auf "false" gesetzt, und die Anwendung kann sich beenden. Geht das auch besser, sodass die Anwendung auch noch reagiert, was bei "Sleep" ja nicht der Fall ist?
Ja das geht. TThread besitzt ein OnTerminate-Ereignis, das aufgerufen wird, wenn der Thread terminiert. Dort kannst du z.B. prüfen, ob es der letzte Thread war.
Dani H.
At Least I Can Say I Tried
 
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: 2 Fragen zu Threads

  Alt 1. Apr 2008, 18:16
@kcx: Erstelle bitte für jede Frage ein eigenes Thema Das hat den Vorteil das es übersichtlicher bleibt und man auch der Titel aussagekräftig das Problem beschreiben kann. Dadurch ist das ganze wiederum über die Suchfunktion gut zu finden und andere die das gleiche Problem haben finden die Lösung über die Suche und müssen nicht nochmal die gleiche Frage stellen.



*** geschlossen ***

Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
 
Thema geschlossen


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 10:59 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