If you take an ordinary piece of code (C, Matlab) and simply run it on a dual G5 under Panther, does it mean both processors will be working on it or does the code have to rewritten?
You do so by dividing your code into multiple tasks and creating threads. For example, you might have one thread in a game that does pathfinding, while a different thread services the network communication.
One caveat (well, there's lots of caveats, but this is one that many people don't realize) is that in a GUI application, typically only the main thread can interact with the GUI.