PThread против boost :: thread? - PullRequest
       11

PThread против boost :: thread?

22 голосов
/ 31 января 2010

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

Ответы [ 5 ]

38 голосов
/ 31 января 2010

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

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

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

35 голосов
/ 31 января 2010

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

9 голосов
/ 31 января 2010

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

6 голосов
/ 31 января 2010

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

2 голосов
/ 31 января 2010

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

...