06-12-2014, 06:31 AM
Our problem is more or less the very opposite - we want to split into many VMs so that code running in one part of the plugin doesn't cause another part of the plugin to block. Our plugins can register callbacks that the server calls whenever the event occurs; for the callback to execute safely it needs to lock the entire VM; this serializes all the callbacks on the CPU, which means that if a plugin registers for an OnTick event and a webadmin page handler, the world tick thread gets blocked every time the webadmin page is being accessed.