From: Plum, J. <jp...@ba...> - 2006-02-10 22:45:07
|
Hello All, Since I was looking for something slightly different than Rob had provided, I managed to make use of his example (TY Rob) and turn it around into something more 'famliliar'. The attached 2 files: ThreadSafe.pm Threadsafe_1.pl The module is built around the idea that there *had* to be a way to get messages from the windows thread (main aka tid =3D=3D 0 ) to the child threads. I renamed things a bit to not confuse anyone with what I was calling. Basic example: My $win =3D #blah we all know this. ThreadSafe::Port($win); # locks this window in as the 'Port of call' #in the child threads/or pipeline threads... ThreadSafe::Anchor(MESSAGE[,DELETE=3D0])=20 # this sets up the base module to hook your message=20 # and then pass it back to your thread. ThreadSafe::Dialog(CODEREF);=20 # -or- ThreadSafe::DoEvents(CODEREF); #@ end of use for MESSAGE ThreadSafe::Anchor(MESSAGE, DELETE=3D1); Those are the basics, and it is **NOT** finished as of yet as I it is entirely dependant on the window. When the window gets TERMINATE order, kaboom, lockage... (this example disables the [x] close button, so just ctrl-c or stop the debugger..) Its Friday evening, and I'm going home from work! Jason P |