And the scopt of the CriticalBlock should just be the checking and setting of the epoll_method variable, not the entire creation of the handler.

Since contention is likely to be (very) rare, perhaps a spinlock would be more appropriate?