Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [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!

Code-Beispiel

Code-Beispiele » System

ThreadCancle

Lizenz:Erster Autor:Letzte Bearbeitung:
WTFPLMitgliedThePuppetMaster 14.12.2011

In FreeBASIC gibt es die Funktionen ThreadCreate und ThreadWait.
Ich selbst hatte mir vor einiger Zeit mal eine ThreadExit oder TreadKill Funktion gewünscht, aber nicht gefunden.

Daher habe ich mir eine Funktion gebastelt, die auf Windows und Linux läuft.


- ACHTUNG -
Ein Thread sollte nur im äuserstem Notfall mit einer derartigen Funktion beendet werden. Der gängige und sicherere Weg ist die Funktion auslaufen zu lassen.
- ACHTUNG -


#IF defined(__fb_linux__)
    declare function pthread_cancel cdecl lib "c" alias "pthread_cancel" (byval pthread_t as integer) as integer
#ELSEIF defined(__fb_win32__)
    #include once "windows.bi"
#ENDIF



Sub ThreadCancel(thread as Any Ptr)
#IF defined(__fb_linux__)
    pthread_cancel(Cast(Integer Ptr, thread)[0])
#ELSEIF defined(__fb_win32__)
    TerminateThread(Cast(Handle Ptr, thread)[0], 0)
#ENDIF
End Sub

ein Beispiel hierzu:

sub threadtest()
print "thread-running"
Dim C as UInteger
do
    print timer()
    sleep 500, 1
    c += 1
    If c = 10 then exit do
loop
print "thread-exiting loop exit"
end sub



print "init thread..."
Dim tthread as any ptr = threadcreate(Cast(Any Ptr, @threadtest))
print "wait 2 secs"
sleep 2000, 1
print "try cancel thread..."
ThreadCancel(tthread)
print "wait threadexit..."
threadwait(tthread)
print "thread exit success!"
end 0


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 13.12.2011 von MitgliedThePuppetMaster angelegt.
  • Die aktuellste Version wurde am 14.12.2011 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen