fb:porticula NoPaste
8.1: Zeitsteuerung in einem Thread
Uploader: | nemored |
Datum/Zeit: | 09.10.2011 23:22:24 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
' *** CODE 8.1: Zeitsteuerung in einem Thread
DIM SHARED AS INTEGER terminate = 0
DIM SHARED mutex AS ANY PTR
mutex = MUTEXCREATE
SUB punktethread
DIM AS INTEGER endetest
DO ' jede Sekunde einen Punkt ausgeben
MUTEXLOCK mutex
endetest = terminate
MUTEXUNLOCK mutex
IF endetest = 1 THEN EXIT DO ' Programm wurde terminiert
PRINT ".";
SLEEP 1000, 1
LOOP
END SUB
' Thread starten
DIM AS ANY PTR thread = THREADCREATE(CAST(ANY PTR,@punktethread))
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
MUTEXLOCK mutex
terminate = 1 ' punktethread abbrechen
MUTEXUNLOCK mutex
THREADWAIT thread ' warten, bis punktethread endet
MUTEXDESTROY mutex