Описание тега concurrent-programming
[CONCURRENT]
программирование относится к парадигме проектирования системы, в которой несколько действий могут быть запланированы для выполнения в любое время, и если доступно больше ресурсов, некоторые из них могут выполняться одновременно.
Параллельная прогон кода-исполнения происходит одновременно (просто совпадение), с
использованием более одного процессора или процессорного ядра
и другие совместно используемые ресурсы для выполнения программы
или нескольких (но независимых друг от друга)
вычислительных блоков (задачи, потоки, и др).
С учетом сказанного, возможность для них взаимодействовать друг с другом существует, но требует дополнительных шагов и мер, чтобы избежать неэффективности их односторонней блокировки, а также риска взаимной блокировки.
Обычно параллельное программирование должно обеспечивать дополнительную проверку правильности и устойчивости к сбоям нескоординированных процессоров, взаимоблокировке и т. Д., В то время как оно может - просто по слабому совпадению - выиграть от лучшего использования ресурсов (более высокая степень занятости, чем просто а [SERIAL]
порядок выполнения), который, с точки зрения необходимости алгоритмического обеспечения установленных ранее целей устойчивости, не гарантирует сквозную производительность параллельной обработки, линейно масштабируемой с количеством доступных ресурсов (см. ниже - не- линейное расширение накладных расходов на арбитраж ресурсов).
Обычно параллельное программирование включает в себя контроль над общими ресурсами, который достигается за счет реализации "арбитров", которые обрабатывают доступ к этим ресурсам и распределяют ресурсы между всеми процессами / потоками.
Хорошая речь Роба Пайка о распространенных недоразумениях по этому поводу