A method, implemented at a computer system that includes one or more processors, the computer system providing a virtualization fabric hosting a plurality of virtual machines including a first virtual machine and a second virtual machine, the method for communicating a low-latency event across a virtual machine boundary, the method comprising: at the first virtual machine: based on an event signaling request by a first process running at the first virtual machine, updating (304, 109a) a shared register that is accessible by the second virtual machine, updating the shared register including updating a signal and a first wake cookie stored in the shared register; and sending (305, 110a) an event signal message through the virtualization fabric to the second virtual machine, the event signal message including a register identifier of the shared register; and at the second virtual machine: receiving (306, 110b) the event signaling message sent by the first virtual machine and identifying the register identifier from the event signaling message; based on the register identifier, reading (307, 109b) the shared register, including identifying a value of the signal stored in the shared register and identifying a first value of the wake cookie stored in the shared register; comparing the first value of the wake cookie with a second value of a second wake cookie locally-stored at the second virtual machine; and based at least on the value of the signal comprising a first value, and only when the first value of the wake cookie is different from the second value of the second wake cookie, signaling (311, 109b) a second process running at the second virtual machine. at the first virtual machine: based on an event signaling request by a first process running at the first virtual machine, updating (304, 109a) a shared register that is accessible by the second virtual machine, updating the shared register including updating a signal and a first wake cookie stored in the shared register; and sending (305, 110a) an event signal message through the virtualization fabric to the second virtual machine, the event signal message including a register identifier of the shared register; and based on an event signaling request by a first process running at the first virtual machine, updating (304, 109a) a shared register that is accessible by the second virtual machine, updating the shared register including updating a signal and a first wake cookie stored in the shared register; and sending (305, 110a) an event signal message through the virtualization fabric to the second virtual machine, the event signal message including a register identifier of the shared register; and at the second virtual machine: receiving (306, 110b) the event signaling message sent by the first virtual machine and identifying the register identifier from the event signaling message; based on the register identifier, reading (307, 109b) the shared register, including identifying a value of the signal stored in the shared register and identifying a first value of the wake cookie stored in the shared register; comparing the first value of the wake cookie with a second value of a second wake cookie locally-stored at the second virtual machine; and based at least on the value of the signal comprising a first value, and only when the first value of the wake cookie is different from the second value of the second wake cookie, signaling (311, 109b) a second process running at the second virtual machine. receiving (306, 110b) the event signaling message sent by the first virtual machine and identifying the register identifier from the event signaling message; based on the register identifier, reading (307, 109b) the shared register, including identifying a value of the signal stored in the shared register and identifying a first value of the wake cookie stored in the shared register; comparing the first value of the wake cookie with a second value of a second wake cookie locally-stored at the second virtual machine; and based at least on the value of the signal comprising a first value, and only when the first value of the wake cookie is different from the second value of the second wake cookie, signaling (311, 109b) a second process running at the second virtual machine.