One common use-case for multicore processing on the desktop and elsewhere is “doing many things at the same time”. You could be running many user-interface programs at once, like the “typical today’s teenager template” of tens of IM clients, web sessions, email conversations, music and video players, downloading movies, etc. Or it is a more business-like background indexing of harddrives, backups being taken, downloading large business files, compiling software, updating source code repositories, etc.
I have been doing both of these modes to some extent, and the main problem with them at least on a PC is that while the processors might be good at multitasking and sharing the CPU load, my IO system is annoyingly non-parallel.
At least on my laptop running Windows Vista, any task that accesses the hard drive intensely (compiling, updating source tree, indexing files) blocks any other task that would also be hard drive intense. For some reason, that includes Microsoft Powerpoint and Outlook. So being productive while my machine churns in the background is pretty hard.
In general, this means that any multicore device intended to do many different things at once will have to have IO that is similarly parallelizable. And that means working hard to avoid any choke points where one stream of data can disturb another. The typical PC of today is not that system, with lots of bottlenecks where “all” data have to pass. Most embedded multicore SoCs appear at least to have more direct connections from IO to cores, but I have not seen how well it works in practice.
This small rant was written while everything else was locked-up competing for my hard drive. I want a parallel fast disk system in my laptop! Pain!