1. An apparatus, comprising: an out-of-order processor executing at least two threads of instructions that communicate and synchronize with each other, wherein a synchronization of said at least two threads is achieved by monitoring addresses of instructions in at least one of said at least two threads.