1. A computer implemented method for handling events in a multi-core processing environment, the method comprising: initiating a first event by a guest running on a first core in a multi-core processing environment; placing the first event on a queue, in response to determining that the first event is to be handled asynchronously by a host running on a second core; handling the first event by the host running on the second core, in response to determining that the first event is initiated by the guest running on the first core; initiating a second event by the guest on the first core, while the guest is waiting for the first event to be handled by the host on the second core, wherein the second core removes the first event from the queue and triggers an event handler for the host to handle the first event; and awakening the second core to handle the first event by the host running on the second core without placing the first event on the queue, in response to determining that the first event is to be handled synchronously by the host running on the second core, wherein the guest on the first core is suspended while the first event is being handled by the host running on the second core, and wherein the guest running on the first core is a virtual machine supported by the host running on the second core, such that the host is configured to provide the operating environment for the execution of the host.