I would figure that the low hanging fruit here would be shared memory before you even get to socket abstractions, mailslots, named pipes, etc. You would share a synchronization object between the multiple threads and signal the other thread with something such as a semaphore, reader/writer lock to let it know that it can know perform an operation on shared memory.