Code-Beispiel
ThreadCancle
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
WTFPL | ThePuppetMaster | 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 | |||||||
---|---|---|---|---|---|---|---|
|
|