On 11/11/2013 12:35 AM, John W. Eaton wrote:
On 11/10/2013 10:45 PM, Daniel J Sebald wrote:
The last answer at this link seems to know more than the rest of us:
http://stackoverflow.com/questions/12820765/can-i-send-signals-to-different-threads
Maybe there is something there.
Yes, it mentions pthread_kill. That appears to allow us to direct a
signal to a particular thread.
I'm attaching a patch that seems to at least partially work for me.
At least interrupts seem to work now inside sleep and long running
functions like "inv (large_matrix)", but now I also get random
segfaults when typing Ctrl-C in the command window after a few
interrupts have been processed (it seems random).
There is a lot there. The only thing that seems somewhat suspicious from
first glance is the fact that
+ interpreter_thread = pthread_self ();
+
I.e., the fact that a thread might be interrupting itself. On the other
hand, the pthread documentation says that is fine, but more than that it
looks like the GUI thread is actually initiating the pthread_kill()
using the above pointer so the thread really isn't interrupting itself.
I'm not sure what the problem might be for the random seg fault, and yes
pthread_kill might not be portable.