Я читаю отличную статью о параллельных расширениях Джо Албахари.Он говорит:
Использование нескольких ядер легко для большинства серверных приложений, где каждый поток может независимо обрабатывать отдельный клиентский запрос, но сложнее на настольном компьютере - поскольку обычно требуется, чтобы вы требовали больших вычислительных ресурсовкод и выполните следующее:
- Разделите его на маленькие куски.
- Выполните эти куски параллельно с помощью многопоточности.
- Соберите результаты по мере их появления, впоточно-ориентированный и производительный способ.
Хотя вы можете делать все это с классическими многопоточными конструкциями, это неудобно - особенно шаги разделения и сортировки.Еще одна проблема заключается в том, что обычная стратегия блокировки для обеспечения безопасности потоков вызывает много споров, когда многие потоки работают с одними и теми же данными одновременно.
Библиотеки PFX были специально разработаны для помощи в этих сценариях.
Мне интересно, как PFX
уменьшает нагрузку?
AFAIK, потоки управляются операционной системой, а ОС отвечает за предоставление и снятие блокировок.Все остальное, как PFX
, является абстракцией, которая хорошо обрабатывает блокировку и пытается выполнить работу с минимальной блокировкой.Я предполагаю, что это возможно даже при непосредственном манипулировании потоками и аккуратной фиксации, чтобы избежать напряжения.
Это правильно?Или есть лучший способ сделать потокобезопасную работу без использования блокировок?