It's running correctly. You're spawning three threads and all three are running concurrently. The reported CPU usage in multi-threaded applications is the sum of the CPU usage of all the threads. You have three threads that each use 100%, therefore you have 300% usage.
Multiple cores and multiple CPU sockets appear the same in nearly all threading libraries. You have to go out of your way to tell the difference, eg. libNUMA.