Sorry if I'm way off (haven't looked at the problem myself), but can't we include a command-byte or so with the payload (in the case the context), so we can multiplex multiple requests on the same signal?
Well, that's what I meant by figuring it out. As far as I know signals cannot contain payload information. The fact that they arrive *is* the information.
Actually that's not quite true. You get the context of the thread at the time of signal arrival, if you use lots of OS specific code. Problem is the nature of signals is that they're async, so you can't use the context to carry information. Or I can't think of how.
The most obvious way is to have a new server request which lets the thread ask what it's supposed to do. That's a bit heavy but would work.
Another way would be a global variable but that'd be prone to races too.