We shouldn't be adding any locks in this code path because it goes against the entire design of the exchange connector threads which are the real-time sensitive parts of the system. Putting this thread to sleep outside of an epoll call makes it impossible to maintain the real-time constraints in some scenarios. In the worst case, we should be using spin locks instead of sleep locks but this looks like it could manageable without locks (we're only reading in the exchange connector threads).

Until this is fixed, I can't merge this PR into master.