(event queue)-> runs: cleanup_corpses
|
->(room 1300)-> runs: remove_corpse
|
(state of room 1300 has changed)-> notify_observers "A corpse decays into nothing."
|
Aragorn.send "A corpse decays into nothing."
Legolas.send "A corpse decays into nothing."
Again, it isn't so much the impact on user experience as it is efficiency/elegance within the MUD. Why wake up 20 or 50 times per second (though 4 or 5 is more realistic) looking for work to do, when it's far more efficient to wake up only when there is actual work to do? Event driven isn't any more complicated to implement than polling, so IMO there's no reason to stick with polling if you're developing something new. I know polling is well understood because of it's historical usage in MUDs, but that doesn't make it the best solution.
PS: Don't know anything about tintin++, but why does it poll at all? As a client, I would have expected it to block indefinitely on read. If it's to process user input, why not do that in a separate thread? One could even simply redirect the user input to a pipe for processing by the read thread if access to shared data is a concern.