Вы не можете надежно тестировать многопоточные программы на одноядерном компьютере. Гоночные условия будут отображаться совсем по-другому или даже полностью скрываться на одноядерном компьютере. Производительность будет снижаться и т. Д.
Если вы хотите НАУЧИТЬСЯ, как программировать несколько потоков, вы можете сделать это на компьютере с одним ядром для первых шагов (т.е. как работает API и т. Д.). Но вам придется тестировать на многоядерном компьютере, и вполне вероятно, что вы увидите ошибки на многоядерном компьютере, которых вы не видите на одноядерном компьютере.
Виртуальные машины по моему опыту не помогают с этим. Они вводят новые ошибки, которых раньше не было, но они НЕ МОГУТ имитировать реальный параллелизм с несколькими ядрами.