I use a single thread for the main server loop.
I use multithreading for things like login (accounts are global and not per-server, so it's a remote call), and for loading maps quickly, and at some point I will use it for pathfinding, but I would never use multithreading for the main server loop.
People may disagree, but to me, multithreading in the main server loop would be a source of endless problems for minimal gain.
CPUs are quite fast, and in an RPG, most actions are very simple:
- "Move item from A to B" is memory copy + zero the old memory.
- "Attack monster A" is just a bit of math (and perhaps a script call).
- etc
Multithreading makes sense where actions are heavyweight, and I don't know what actions those would be.