#многопоточность #книги #cpp
Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются. Хотите улучшить этот вопрос? Update the question so it can be answered with facts and citations by editing this post. Закрыт 4 года назад. Доброго времени суток! Посоветуйте книги по теме соответственно. Во многообразии выдачи поисковиков можно потеряться и хочется услышать совета опытных людей, что почитать новичку и разобраться как можно глубже в теме. Желательно в порядке нарастания сложности для изучения. Начал пока с этой C++ Concurrency in Action P.S. на данный момент есть задача: общая очередь заданий, несколько потоков кладут их туда, а несколько читают и соответственно выполняют. В общем, вроде укладывается в паттерн Poducer-Consumer.
Ответы
Ответ 1
В упомянутой книге упор делается на практический аспект многопоточности. Начинать погружение в тему лучше с неё. На ней же можно и закончить. Для большинства реальных задач этого будет достаточно. Если же хочется познать многопоточность на полную глубину и стать мастером, то без изучения теории не обойтись. Для этого есть другая книга - "Параллельное и распределенное программирование с использованием C++". Описание на ozon.ru совершенно не соответствует содержанию. Оно выглядит легкомысленно и ничуть не пугает. Можно подумать, что эта книга для начинающих. В действительности же она представляет собой академический хардкор, читать который очень непросто. А что касается конкретно паттерна Producer-Consumer, то его реализацию лучше всего делать в lock-free манере. В журнале Dr. Dobb's была статья о том, как это сделать. Правда в вашем случае всё равно потребуется кое-какая блокировка. Нужно будет блокировать отдельно Producer'ов и отдельно Consumer'ов, чтобы в очередь одновременно не лезло более одного потока каждого вида.Ответ 2
Ну насчет параллельности не знаю, а вот по concurrency есть такой гуру Doug Lea. По ссылке есть его книжки. Видел даже его сайт с исходниками/примерами и проч.Ответ 3
@Fe1iX, что лучше читать, не знаю. А для задачи, не заморачивайтесь, делайте попроще. Если в *nix, то для разделения доступа используйте pthread_mutex_t (pthread_mutex_lock()/pthread_mutex_unlock() из pthread.h), а для управления очередью sem_t (sem_wait()/sem_post() из semaphore.h).
Комментариев нет:
Отправить комментарий