Archiv verlassen und diese Seite im Standarddesign anzeigen : fltk - gui - programm, das statusanzeigen hat
peschmae
07-05-2002, 11:31
hallo,
ich möchte mit fltk ein gui programm schreiben, das aus einem mit
fork() erzeugten kindprozess alle 1/2 sekunden oder so zwei bestimmte
variablen ausliest.
Ich denke am besten macht man das mit einer Pipe Kindprozess->Elternprozess,
aber wie bringe ich den Elternprozess (die Programm - GUI) dazu, das
Zeugs regelmässig auszulesen ohne dass dabei die GUI einfriert?
MFG Peschmä
Christoph
07-05-2002, 11:58
Ich nehme mal an, dass du im Callback von Fl_Timer dein Auslesen implementierst.
Wenn dein Problem darin besteht, dass dieses Auslesen blockiert (weil nix
neues da ist), dann gibt es zwei Möglichkeitetn:
a) nicht blockierend lesen. Einstellung geht glaube ich mit ioctl() oder dergleichen.
b) einen eigenen Thread für das lesen verwenden und im Fl_Timer Callback prüfen,
ob der Lese-Thread schon fertig ist.
Lösung a) ist vermutlich leichter zu implementieren.
Christoph
peschmae
07-05-2002, 12:53
threads unter linux!?
ich hab immer gedacht, da gibt's nur fork(), was dann einen neuen kindprozess mit eigenem Stack, etc produziert!
Wie geht das? - Bzw wo finde ich eine _gute_ Website dazu?
anda_skoa
07-05-2002, 15:28
Original geschrieben von peschmae
threads unter linux!?
ich hab immer gedacht, da gibt's nur fork()
Hehe, der war gut :D
Wie geht das? - Bzw wo finde ich eine _gute_ Website dazu?
http://www.tldp.org/FAQ/Threads-FAQ/
Aber eventuell suchst du gleich bei Google und/oder Sourceforge nach einer C++ Biliothek für Threads.
Da gibt es zB ACE, das ist auch auf Windows portiert und da du ja fltk benutz, das es auch für Windows gibt, bietet sich das vielleicht an.
Sonst findest du eventuell eine bei boost.org
Ciao,
_
Christoph
07-05-2002, 16:50
@peschmae:
Klar gibts Threads unter Linux, und zwar mit libpthreads eine Implementierung
der POSIX-Threads. Heisst natürlich, dass du dann nur noch die "reentrant"-Varianten
der ANSI C Funktionen verwenden darfst!
@anda_skoa:
Kein Grund sich drüber lustig zu machen: Threads sind relativ neu und überhaupt
erst seit der (thread-sicheren) glibc unter Linux im Prinzip nutzbar.
So glatt wie unter kommerziellen Unix-Systemen klappt es unter Linux leider
noch nicht: unter Linux werden Threads nämlich über Prozesse implementiert,
was zu kuriosen Ergebnissen führt (insbesondere wird die Verwendung von Signalen
problematisch).
Es gibt aber glaube ich eine Thread-Implementierung von IBM nebst Kernel-Patch,
die die klassischen Problem der "LinuxThreads" nicht hat.
Christoph
anda_skoa
07-05-2002, 18:52
Original geschrieben von Christoph
@anda_skoa:
Kein Grund sich drüber lustig zu machen: Threads sind relativ neu und überhaupt
Ich wollt mich nicht drüber lustig machen, wenn das so empfunden wurde, möcht ich mich entschuldigen.
Ich fand es nur witzig, weil es so nach FUD geklungen hat.
Threads gibts doch sicher seit Kernel 2.1.irgendwas, 2.2.0 war AFAIK der erste Nicht-Entwickler Kernel der sie hatte.
Und der ist schon ziemlich alt.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.