Многопоточность - это когда несколько потоков выполняются одновременно. Но, когда потоки синхронизированы, многопоточность не происходит. Они работают как нормальная нить. Тогда почему многопоточность в первую очередь, если нам нужно ее синхронизировать?Не работает ли синхронизация, многозадачность становится многопотоковой? Тогда почему многопоточность в первую очередь?
ответ
Если вы синхронизируете свои потоки так, как вы описываете, то в многопоточности нет смысла. Одно место, где вы должны использовать многопоточность, - это параллельная обработка данных. После того, как вы соберете все необходимые входные данные, вы можете запускать потоки независимо друг от друга без необходимости синхронизации.
Вы не синхронизируете, так что вы заканчиваете тем, что никогда не выполняете параллель, вместо того, чтобы синхронизировать, так что определенные части кода не выполняются параллельно.
Представьте себе две темы, которые постепенно считывают значения из общего массива, выполняют некоторые вычисления на них, а затем добавляют результат в папку общей памяти.
Часть со значениями считывания требует синхронизации, чтобы убедиться, что ни один из двух потоков не читает одно и то же значение.
Часть с добавлением данных в ячейку памяти должна быть синхронизирована, чтобы данные не записывались обоими потоками одновременно.
Часть с вычислением может быть выполнена параллельно, и обычно эта часть будет наиболее трудоемкой. Таким образом, вы получаете многопоточность.
Вы только синхронизируете критические разделы, которые должны выполняться взаимно исключительно. –
Если вы синхронизировали с помощью одного замка абсолютно все, что было бы бессмысленно, то почему бы вам этого не сделать. –