Подтвердить что ты не робот

PThread vs boost:: thread?

Не имея опыта работы с потоками в прошлом, какая технология потоковой обработки на С++ будет самой простой для новичка? boost:: thread или pthreads?

4b9b3361

Ответ 1

Перейти для boost:: thread. Он тесно связан с работой над предстоящими стандартными потоками С++, а интерфейс довольно прост в использовании и идиоматичен для С++ (RAII вместо ручного управления ресурсами).

Ответ 2

Я пойду в обратном направлении всех остальных - узнайте (или, по крайней мере, ознакомьтесь с тем, что доступно) pthreads.

Так как boost - это всего лишь обертка вокруг pthreads (на платформах posix), это помогает узнать, что происходит внизу. При попытке быть универсальным, форсирование оставляет платформу определенной функциональностью развернутой. Чтобы добраться до него, вам нужно использовать вызовы native_handle(). Чтобы использовать вызовы native_handle(), вам нужно знать, что предлагает платформа.

Подумайте, как сокеты. Есть десятки классов сокетов и фреймворков. Но в конечном итоге они завершают базовый API-интерфейс платформы. Ваше понимание всегда богаче, зная это - и зная, каким образом ваши абстракции класса могут иметь короткие приключения.

Ответ 3

boost:: thread - очень хорошая и портативная абстракция. Я бы, конечно, использовал его, но также узнал родной поток api, как pthreads, чтобы вы знали, как потоковая обработка работает на вашей платформе.

Ответ 4

Boost.Thread использует концепцию RAII для блокировки, что делает вещи более безопасными для исключений и помогает избежать ошибок, таких как забывание о выпуске мьютекса.

Ответ 5

Я бы сказал, что они довольно близки к равным с трудом. Единственное большое различие, которое я вижу, это то, что PThreads довольно широко поддерживают (если вы заинтересованы в перекрестном переносе платформы). Другим является то, что на PThreads было довольно много хороших книг, хотя почти все концепции будут переведены на boost:: thread и многие другие библиотеки потоков.