in reply to Re^2: How can perl thread exit elegantly
in thread How can perl thread exit elegantly
Can we define signal of our own?
No. Signals and threading do not mix; and as you've found out, even the "threads signals" apparently intended for use with threads don't work for any reasonable definition of the term.
For example, With SAFE_SIGNALS in force, a signal, even a kill, will not interrupt a join. (That's the first problem with the code you posted in your new thread.)
And even if you worked your way around that; you'll end up having to poll in your threads and that's a nonsense.
Far simpler to set a shared variable true in your main thread signal handler and have your threads poll on that.
But simpler even than that is to just detach your threads -- either when you create them or when you receive the kill signal -- and then exit your main thread. The kids will then just go away silently without any polling or other special considerations, regardless of what they are doing at the time.
|
|---|