You cannot reliably check multithreaded programs on one main machine. The race conditions will be displayed in a completely different way or even completely hidden on the same main machine. Productivity will decrease, etc.
If you want to LEARN how to program multiple threads, you can do this on one main machine for the first steps (for example, how the API works, etc.). But you will have to test a multi-core machine, and it is very likely that you will see errors on a multi-core machine that you do not see on the same main machine.
Virtual machines in my experience do not help. They introduce new errors that were not previously displayed, but they CANT mimic real concurrency with multiple cores.
source share