I said realtime, not real. The bulk of the applications in your list process a static input. For example, a renderer would typically divide the scene view into smaller sections and dispatch each of them to an available core (you can see this when you run Cinebench). The output of each is assembled into the final target render. The same applies to file processing applications. These are easy to multithread as there's minimal interaction or shared memory between threads.
Realtime applications such as games, webservers, physics modelling etc where the inputs are asynchronous and changing rapidly are much harder to multithread properly, if at all. You have to synchronise reads and writes to any shared memory values, weed out race conditions between threads, avoid deadlocks, etc. Get it right, and the performance gain scales with the number of cores. Get it wrong and you're stuck in debugging hell for eternity. It's non-trivial, although certain language paradigms make it more bearable to code.
Game engines typically offload sound processing and network activities onto separate threads, but the main application loop still runs in a single thread/core, which is why most currently do not benefit from an increase in core count, but DO benefit from an IPC and clock increase where the CPU is bottlenecking the GPU (these days it's usually the GPU that's the bottleneck, which is preferable).