Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

7.1: Zeitsteuerung in einem Thread

Uploader:Redakteurnemored
Datum/Zeit:09.10.2011 21:33:06
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
Warnung: Es steht bereits eine neuere Version des Quelltexts zur Verfügung. Die hier vorliegende alte Version könnte Fehler enthalten, die in der neuen Version vielleicht ausgebessert wurden.

DIM SHARED AS INTEGER terminate = 0
DIM SHARED mutex AS ANY PTR

SUB punktethread
  DIM AS INTEGER endetest
  DO                             ' alle 5 Sekunden einen Punkt ausgeben
    MUTEXLOCK mutex
    endetest = terminate
    MUTEXUNLOCK mutex
    IF endetest = 1 THEN EXIT DO
    PRINT ".";
    SLEEP 1000, 1
  LOOP                           ' Programm wurde terminiert
END SUB

' Thread starten
DIM AS ANY PTR thread = THREADCREATE(CAST(ANY PTR,@punktethread))
mutex = MUTEXCREATE
DIM AS STRING taste

DO
  taste = INKEY
  IF taste = CHR(27) THEN
    EXIT DO                              ' Programmende bei Eingabe von ESC
  ELSEIF taste <> "" THEN
    PRINT taste;                         ' Benutzereingabe anzeigen
  END IF
  SLEEP 1                                ' Pause fuer den Prozessor
LOOP

terminate = 1                            ' punktethread abbrechen
THREADWAIT thread                        ' warten, bis punktethread endet
MUTEXDESTROY mutex