Некоторые люди могут подумать, и начал атаку с многопоточности и комплекса, но и сделать код множество проблем, но на самом деле это мощный инструмент, который позволяет программе в полной мере использовать аппаратные ресурсы, так что программы работают быстрее ,
Что осложняется:
Два или более самостоятельные действия должны происходить одновременно. Компьютер представляет собой единую систему одновременно выполнять несколько независимых задач, выполнив эту задачу на некоторое время, а затем переключиться на другую задачу, чтобы сделать какое-то время, что позволяет появляется задача будет выполняться параллельно. Переключение переключение контекста осуществляется, будет стоимость времени, сохранение операционной системы CPU в настоящее время работает состояние задачи и указатель, где вы хотите переключиться вычислить задачу и задачу на предстоящий переключатель для перезагрузки состояние процессора.
Параллельный путь:
Параллельная многопоточная многозадачность
Более сложный процесс:
Точно то же самое время, запустить веб-браузер, QQ, слово этого путь принадлежит к более сложному процессу. Между процессы общаются через трубу, розетки, файлы и другие средства.
Многопоточность:
Запуск нескольких потоков в одном процессе. Все потоки в процессе общего адресного пространства.
Почему Параллелизм:
1: Разделение концернов
2: Повышение производительности
Если не использовать Параллельное:
В принципе, единственная причина, чтобы не использовать параллелизм, а не выгоды затрат. Использование параллельного кода во многих случаях трудно понять, поэтому писать и поддерживать многопоточные коды производит немедленное ментальные расходы и дополнительная сложность может также привести к большему количеству ошибок. Если потенциальный прирост производительности не является достаточно большим или разделением задач, чтобы очистить достаточно, чтобы компенсировать необходимое дополнительное время и техническое обслуживание, связанное с многопоточным кодом дополнительной платой (под кодом правильного помещения) развитий, в противном случае, не следует использовать параллелизм. Кроме того, поток является ограниченным ресурсом. Если вы позволите слишком много потоков, выполняющихся в то же время, операционная система будет потреблять много ресурсов, так что работать более медленно на операционной системе в целом.
Простой пример параллелизма:
Hello.cpp //
#include <iostream> #include <Thread> // поддержка многопоточности заголовок с использованием имен STD; аннулируются thread_func () // ребенок функция входа нити { COUT << " Hello Thread " << епсИ; } ИНТ основная () { нить my_job (thread_func); my_job.join (); // основной поток как дочерний поток закончена перед продолжением COUT << " Hello главные " << епсИ; вернуть 0 ; }
# CMakeLists.txt cmake_minimum_required (версия 3.5 . 1 ) набор (CMAKE_CXX_FLAGS " $ {} CMAKE_CXX_FLAGS -std = C ++ 11 -march = родной -O3 -pthread " ) проекта (thread_test) add_executable (thread_test1 hello.cpp)