fb:porticula NoPaste
7.1: Zeitsteuerung in einem Thread
Uploader: | nemored |
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