CPUs are not getting faster, just more cores.
Software must now take on the complexity of using the cores.
Traditionally, if multiple cores try to access and manipulate the same piece of memory, they can corrupt the memory unless synchronization is used.
Synchronization is painful, error prone, tiresome, and can hurt performance.