It depends on the TW Version, up to what I know:
- 7.3 and previous, they where executed in-line when where triggered
- (in between) I don't know in which version in-between they changed the execution logic....
- 8.4 and above, they are executed asynchronously by the Event Processor Subsystem, which will use in parallel the amount of Threads you defined on it (by default 16). This text comes directly from R&D: "the internal event queue is an implementation of Java LinkedTransferQueue which has FIFO semantics. However, as long as there are executors available event will start getting executed in parallel (not out of order, events will be pulled in the order they were recieved) but depending on the length of the execution they could complete out of order. (i.e. the second task could finish before the first)"
Hence -> No ordered execution of events if they depend on the result of the others, if your processing subscription algorithm isn't 100% parallelizable you are out of luck.
Well, actually it's why I've implemented the Mutex extension 😉
Best Regards