Perl: the Markov chain saw | |
PerlMonks |
Communication between threadsby crenz (Priest) |
on May 02, 2004 at 19:03 UTC ( [id://349847]=perlquestion: print w/replies, xml ) | Need Help?? |
crenz has asked for the wisdom of the Perl Monks concerning the following question: Fellow monks, I have problems coming up with a good solution for one thread sending "messages" to another thread. Here's the problem: A subthread of my program listens on an UDP socket and receives messages. These messages are evaluated and a hash containing parameter values is updated. This hash is marked as shared between threads. The main program displays a wxPerl GUI, including some function plots (drawn using the shared parameter hash). It runs the wxPerl main message loop. Here's the problem: How can the subthread tell the main thread to redraw the function plots? The solution I came up with is to define a signal handler in the main thread that implements the GUI updates, then use kill 'SIGUSR1', $$; in the subthread. The problem with this solution is that the signal is only handled once I activate the application. Ie., when running another application in the foreground, the UDP messages will be received and the signal is sent, but the signal will only be handled after I click on the application's main window. This is unsatisfactory, as I want the function display to be updated immediately. Is there a way I can work around this problem, or is there a more elegant solution? Thanks for your help! Edit: I should mention I'm running this on Mac OS X 10.3.3.
Back to
Seekers of Perl Wisdom
|
|