Consider this code:
volatile EventWaitHandle waitHandle; // Thread1, represents an IO-bound worker thread: while (true) { waitHandle?.Set(); } // Thread 2, re