Большинство ответов здесь делают вывод multicore => multithreading
выглядеть неизбежным.Однако есть и другой способ использования нескольких процессоров - multi-processing
.Особенно в Linux, где, AFAIK, потоки реализованы как просто процессы, возможно, с некоторыми ограничениями, а процессы дешевы в отличие от Windows, есть веские причины избегать многопоточности.Итак, здесь есть проблемы с архитектурой программного обеспечения, которыми нельзя пренебрегать.
Конечно, если параллельные строки выполнения (потоки или процессы) должны работать с общими данными, потоки имеют преимущество.Но это также главная причина головной боли с потоками.Может ли такая программа быть спроектирована таким образом, чтобы части были как можно более независимыми и независимыми, чтобы мы могли использовать процессы?Опять же, проблема архитектуры программного обеспечения.
Я бы предположил, что многопоточность сегодня - это то, чем было управление памятью во времена C:
- , это довольно сложно сделать правильно,и довольно легко испортить.
- ошибки безопасности потоков, такие же как утечки памяти, противны и трудно найти
Наконец, вы можете найти эту статью интересно (перейдите по этой первой ссылке на странице).Я признаю, что я прочитал только реферат.