Ответ 1
Перейти для boost:: thread. Он тесно связан с работой над предстоящими стандартными потоками С++, а интерфейс довольно прост в использовании и идиоматичен для С++ (RAII вместо ручного управления ресурсами).
Не имея опыта работы с потоками в прошлом, какая технология потоковой обработки на С++ будет самой простой для новичка? boost:: thread или pthreads?
Перейти для boost:: thread. Он тесно связан с работой над предстоящими стандартными потоками С++, а интерфейс довольно прост в использовании и идиоматичен для С++ (RAII вместо ручного управления ресурсами).
Я пойду в обратном направлении всех остальных - узнайте (или, по крайней мере, ознакомьтесь с тем, что доступно) pthreads.
Так как boost - это всего лишь обертка вокруг pthreads (на платформах posix), это помогает узнать, что происходит внизу. При попытке быть универсальным, форсирование оставляет платформу определенной функциональностью развернутой. Чтобы добраться до него, вам нужно использовать вызовы native_handle(). Чтобы использовать вызовы native_handle(), вам нужно знать, что предлагает платформа.
Подумайте, как сокеты. Есть десятки классов сокетов и фреймворков. Но в конечном итоге они завершают базовый API-интерфейс платформы. Ваше понимание всегда богаче, зная это - и зная, каким образом ваши абстракции класса могут иметь короткие приключения.
boost:: thread - очень хорошая и портативная абстракция. Я бы, конечно, использовал его, но также узнал родной поток api, как pthreads, чтобы вы знали, как потоковая обработка работает на вашей платформе.
Boost.Thread использует концепцию RAII для блокировки, что делает вещи более безопасными для исключений и помогает избежать ошибок, таких как забывание о выпуске мьютекса.
Я бы сказал, что они довольно близки к равным с трудом. Единственное большое различие, которое я вижу, это то, что PThreads довольно широко поддерживают (если вы заинтересованы в перекрестном переносе платформы). Другим является то, что на PThreads было довольно много хороших книг, хотя почти все концепции будут переведены на boost:: thread и многие другие библиотеки потоков.