Я некоторое время изучал C++ и до сих пор не наткнулся на хорошую книгу, которая объяснила бы, что это за звери? Являются ли они неотъемлемой функцией С++? Если да, то почему они упоминаются только в такой книге, как «Язык программирования C++» Б.С. Если нет, то где вы можете получить достоверную информацию о них - предпочтительно книгу (не очень люблю веб-учебники), как их определить, как их использовать и т. д. Спасибо за любую ценную помощь.
Блокировки и мьютексы в C++
Ответы (5)
Блокировки и мьютексы — это конструкции параллелизма, используемые для предотвращения одновременного доступа двух потоков к одним и тем же общим данным, что обеспечивает корректность.
В текущем стандарте C++ нет средств параллелизма.
Хотя вы упомянули, что предпочитаете книги онлайн-руководствам, Столбец "Эффективный параллелизм" определенно обязателен к прочтению.
Существует также предстоящая книга Энтони Уильямса под названием Параллелизм C++ в действии. Энтони Уильямс является автором Boost.Thread. библиотека.
Еще одна библиотека потоков, на которую стоит обратить внимание, — это Intel TBB.
Блокировки и мьютексы не являются частью текущего стандарта C++, поскольку они имеют дело с параллелизмом, который не является частью стандарта. Они включены в несколько библиотек, и разные ОС имеют разные способы работы с ними (потоки POSIX и Windows). Если вы возьмете книгу по параллельному программированию для C++, вы, вероятно, найдете то, что ищете. Вы можете найти их реализации как в библиотеках boost, так и в библиотеках ACE.
Потоки являются частью стандарта C++0x. Я пока не знаю ни одной книги по этому вопросу, но в Википедии есть описание новых функций многопоточности здесь.
В настоящее время C++ не поддерживает потоки, поэтому потоки мьютексов и т. д. не являются частью языка.
Обычно вам нужно использовать системные библиотеки для потоков и мьютексов, например библиотеку pthread в Linux.
Возможно. pthread-подобные библиотеки слишком похожи на c, но есть библиотеки C++, которые оборачивают их в C++-стиль, например, ptypes или boost.
Это базовые конструкции, используемые для обеспечения корректности в параллельных программах. Они включены в Boost и новый стандарт C++.
Я могу рекомендовать эту книгу, хотя она не посвящена C++: https://rads.stackoverflow.com/amzn/click/com/0123705916.
Блокировки и мьютексы (подумайте: взаимное исключение) позволяют взаимодействующим потокам синхронизировать доступ к общим ресурсам. Чтобы получить краткий обзор концепции, прочитайте статью Википедии о взаимном исключении.
Эти концепции не являются частью языка C++. книга O'Reilly pthreads будет хорошим справочником для вас, если вы работаете на платформе POSIX. . Для Windows вы можете использовать Системное программирование Windows из Аддисон-Уэсли.