mean you run on several cores (well, generally), but it doesn't necessarily mean you get much advantage
from it - ie., if you have threads that's mostly asleep, for instance. And you obviously do need to create multiple threads first, just (for instance) linking against multi-threaded C runtime doesn't really help
For typical CPU-intensive stuff, it can be a pain parallelize your algorithms. OpenMP
and compiler support can help, but I dunno how well it works - you still need to think
yourself, and add hints for the compiler.
For stuff like internet servers, the situation is probably a bit easier (set up a thread pool and handle clients from that), but still not exactly trivial
- you need to consider race conditions, deadlocks, synchronizing access to shared state, et cetera.
But this is drifting away from the topic of listing software that has efficient use