Best: Stop the polling for monitored events. That causes TCC to use about 30% more cycles than without it. Assuming you have something analogous to queue(s) and a thread to (poll and) process the queue(s), can you not let the queueing of an event set an EVENT (or other synchronization device) for which the queue-servicing thread could wait? Second best: Put that polling back in its own thread (as in v20 and before). so those who never use *MONITOR can suspend the thread.