It seems so intuitive to say that parallel computation should always be faster than computing on a single thread. Like spawning two threads should, intuitively, almost halve the computation time. Not only is this numerically wrong, but parallel computing creates garbage results if not done properly.
To understand this, consider a man who is given a task to transfer a pile of blocks from one place to another:
He does this work at some speed. Putting another man with him might sound like doubling the speed of the work, but the two might actually crash into each other on their way and make things ...