How does your callback get fired if your main program is in a tight loop calling Win32::Sleep? If it is called from a different thread, I can only suggest that you really do learn C programming and about (Windows) threads. Blindly sharing code and data structures between threads does not work, neither in C nor in Perl.
It seems to me that the problem you're trying to solve is to fire a Perl callback that gets launched from a different thread. You cannot call into Perl if the interpreter is currently not in its runloop, as you have noticed. Async::Interrupt offers you the runloop modification and approach to send a signal to your Perl interpreter asynchronously. The signal will only get processed once the Perl interpreter enters its runloop again. This is quite similar to the "safe signals" of Perl, and there rarely is a reason to really use "unsafe signals" - in most cases, you'll end up with the same problems that you already saw.
In reply to Re: Perl interpreter throws strange errors for event-driven callback processing under race conditions
by Corion
in thread Perl interpreter throws strange errors for event-driven callback processing under race conditions
by Cotton4Lunch
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |