Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Timer mit Callback

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.02.2004, 22:09 Uhr
~stephanw
Gast


Guten Tag

Ich bin grad an einer Timer-Klasse, die möglichst allgemein sein soll (ohne zu spezielle Libs). Meine Idee war/ist, einen Thread (pthread) aufzumachen, in dem dann alle x ms ein User-Callback aufgerufen wird. Funzt soweit auch, "dummerweise" aber eben parallel zu main und alle Timer untereinander eben auch parallel. Insbesondere laufen ja auch die Callbacks dann mit in dem jeweiligen Thread und damit parallel, so dass da sehr schnell sehr großer Murks entstehen kann, wenn die Callbacks nicht absolut trivialen Kram machen. Mit Mutex's könnte man auch bestenfalls die Timer untereinander abstimmen... Hat jemand da eine Idee oder gibts da vielleicht eine fertige Lib ? Die Timer sollen im Prinzip so funktionieren wie die in Qt oder OpenInventor, falls Euch das bekannt ist.

Grüße, Stephan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.02.2004, 23:48 Uhr
virtual
Sexiest Bit alive
(Operator)


Entweder Du arbeitest mit Threads oder mit Signalen oder baust Dein Programm Ereignisgesetuert um. Threads und signale bedeuten - wie du richtig erkannt hast - synchronisations Probleme, die man eigentlich nur mit Semaphoren in den Griff bekommen kann. Bleibt also nur noch Ereignis gesteuerte Programmierung. Dann ist es aber nicht mehr mit einer einfachen Funktion aus einer Library getan, sondern man muß das ganze Programm entsprechend ausrichten, so wie es die Frameworks QT, MFC, oder wie sie alle heißen ja auch machen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.02.2004, 11:14 Uhr
~stephanw
Gast


Ja genau, das ist mir dann auch aufgefallen Entweder man muss das gesamte Programm in eine solche Architektur verwandeln, dann kann man die Timer so handeln oder man muss mit den Synch-Probs leben bzw. nur in einem solcehn Kontext verwenden, wo das nicht passieren kann. Also zweiteres
Danke trotzdem !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.02.2004, 13:04 Uhr
ao

(Operator)


Die Timer-Klasse ist doch nur dazu da, für den periodischen Aufruf zu sorgen. Die weiß nicht, was sie da aufruft und welche Sync-Probleme dadurch entstehen (können).

Der User-Callback weiß das aber, und der muss dafür sorgen, dass die Reihenfolge eingehalten wird.

Wenn es also zwei Timer-Instanzen gibt, deren User-Callbacks konkurrieren könnten, dann müssen diese durch einen Mutex gegeneinander gesperrt werden.

Ob man das vorsichtshalber gleich beim Eintritt in den Callback macht ob man oder genauer hinschaut und nur die kritischen Statements schützt, ist Geschmackssache und hat mit den allgemeinen Anforderungen an Performance, an Sicherheit, an Pflegbarkeit, mit dem Können des Programmierers usw. zu tun.

Solange das Ding noch mitten in der Entwicklung ist und sich täglich ändert, wird man vorsichtig sein und lieber zuviel schützen und etwas langsamer sein als zuwenig schützen und nach einer unbedachten Codeänderung auf einmal Race-Conditions kriegen. Das Finetuning kommt dann später.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: