Seite 1 von 1

Thread + DesktopMouseX()

Verfasst: 18.08.2013 18:22
von kevv

Code: Alles auswählen

;PB 5.20 beta 11 (86)
;Linux Mint 14
;Theard-Sicheres Executable an 

OpenWindow(10, 0, 0, 220, 220, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 10, 10, 200, 200 ,#PB_Canvas_Keyboard)


Procedure Thread(d)
Delay(1000)

Debug "Start theard "
Repeat 
 NeuX=DesktopMouseX()
 NeuY=DesktopMouseY()
 Debug NeuY
 Delay(10)
ForEver
EndProcedure



Thread = CreateThread(@Thread(),0)

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

Programm stürzt ab entweder sofort oder nachdem ich mit der Maus über das Canvasgadget gleite
mit der Meldung < Programm abgebrochen (durch eine externe Library) >
Bug oder mein Fehler ?

Re: Theard + DesktopMouseX()

Verfasst: 18.08.2013 20:52
von MVXA
kevv hat geschrieben:Bug oder mein Fehler ?
Bild

Threads sind sehr kompliziert und selten eine gute Idee. Das ist ein sehr komplexes Themengebiet. Sie bieten sich nur für wenige Problemstellungen an, werden häufig an den falschen Stellen eingesetzt.

Ohne jetzt mit dem GDB durch das Programm gesprungen zu haben behaupte ich einfach mal, dass der Teil der Bibliothek nicht sicher für Threads ist. Die Behauptung wird durch diese Meldung gestützt:

Code: Alles auswählen

[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
purebasic_compilation0.out: xcb_io.c:179: dequeue_pending_request: Zusicherung »!xcb_xlib_unknown_req_in_deq« nicht erfüllt.