Степень параллелизма в основном зависит от физических процессоров / ядер, доступных на вашей машине. Если у вас компьютер с одним процессором или ядром, то наличие отдельных процессов может привести к слишком большой нагрузке. В этом случае обычно предпочтительнее использовать нити.
Если у вас несколько ядер / процессоров, то в зависимости от того, что делает каждый процесс / поток, вы можете выбрать процессы, если накладные расходы оправданы. Процессы, очевидно, имеют гораздо лучший уровень изоляции памяти, чем потоки, но в то же время в Windows процессы довольно тяжелые по сравнению с потоками.
Потоки, конечно, могут совместно использовать данные в одном и том же процессе, но, опять же, вам необходимо синхронизировать доступ к общим данным, чтобы предотвратить повреждение данных. Совместное использование данных между процессами является более сложным процессом, который требует дополнительных затрат (что выше, чем простая синхронизация потоков), в зависимости от используемых механизмов, таких как именованные каналы, настраиваемая связь через сокеты, использование инфраструктуры удаленного взаимодействия, общего файла / базы данных и т. Д.