Есть ли разница между эффективностью распределения с использованием потоков и процессов?
Есть 4-ядерный процессор и некая программа. Если выполнять некую программу в одном процессе, то мы не используем мощности всего процессора, будет много переключений контекста. Чтобы повысить эффективность мы можем:
- А) Создать 4 процесса по 1 главному потоку в каждом
- Б) Создать 1 процесс с 4-мя потоками
В интернете пишут, что разницы в эффективности не будет. Это бы означало, что разницы между потоком и процессом нет, то есть они взаимозаменяемы и ядро может захватить поток созданный внутри процесса и использовать как главный поток в другом процессе, то есть просто использовать как процесс. Однако мне показалось это странным т.к. насколько я понял потоки внутри процесса не могут выполняться по-настоящему одновременно - внутри одного процесса потоки делят ресурсы и выполняются в пересекающиеся промежутки времени посредством переключения контекста, что означает, что вариант Б) будет менее эффективен. Так вот резюмируя:
- Будут ли варианты А) и Б) одинаковы по эффективности и почему?
- Взаимозаменяемы ли потоки и процессы, то есть может ли поток созданный внутри процесса стать отдельным процессом? Может есть какая-то другая причина почему варианты А) и Б) будут одинаковы по эффективности?