Я узнаю о различных типах параллелизма (я использую Python, но вопрос применим за его пределами). Типы, на которые я смотрю:
- Многопоточность
- Asyn c
- Syn c
- Многопроцессорная обработка
Насколько я понимаю, asyn c и syn c могут использовать один поток или несколько. Когда используется несколько потоков, это считается многопоточностью. Кроме того, многопоточность - более широкий термин, относящийся к программам async
или sync
, использующим более одного потока. Это означает, что приведенный выше список действительно должен выглядеть следующим образом:
- Async
- Одиночный поток
- Многопоточный
- Синхронизация
- Однопоточность
- Многопоточность
- Многопроцессорная обработка
Мои знания для async
и sync
основаны на этом article .
Часть, которая меня немного смущает, - это разница между многопроцессорностью и многопоточностью. Я знаю, что в многопоточности используются потоки, а в многопроцессорных - процессы. Глядя на этот SO Вопрос , я думаю, что главное отличие состоит в том, что у одного есть общее пространство памяти, а у другого нет. Хотя я не совсем понимаю, что это значит. Я также слышал, что многопоточность может быть не очень хороша для программ, связанных с процессором, почему?
Помимо этих вопросов, было бы очень полезно хорошее сравнение четырех, спасибо!