Повторный вход в Boost - PullRequest
       23

Повторный вход в Boost

1 голос
/ 21 января 2012

При работе с многопоточностью мне нужно убедиться, что используемые мной классы буста реентерабельны (даже если каждый поток использует свой собственный экземпляр объекта).

Мне трудно найти в документации классов Буста заявление о повторном входе в класс. Я что-то здесь упускаю? Являются ли все классы Boost реентерабельными, если в документации явно не указано иное? Или документация Boost о повторном входе - это серая область?

Например, я нигде не нашел в документации заявление о повторном входе в класс boost :: numeric :: ublas∷matrix. Так я могу предположить, что это реентерабельный или нет?

Спасибо!

Офер

1 Ответ

1 голос
/ 21 января 2012

Большая часть Boost похожа на большую часть стандартной библиотеки STL и C ++:

  • Одновременно можно создавать два экземпляра типа в двух потоках.
  • Одновременно можно использовать два экземпляра типа в двух потоках.
  • Использование одного объекта в двух потоках одновременно не всегда хорошо.
  • Но выполнение операций «только для чтения» над одним объектом в двух потоках - это нормально.
  • Обычно не предпринимается никаких особых усилий для «повышения» безопасности потока, за исключением случаев, когда это особенно необходимо, например shared_ptr, Asio, Signals2 (но не Signals) и так далее. Части Boost, которые выглядят как типы значений (такие как пример матрицы), вероятно, вообще не имеют никакой специальной поддержки безопасности потоков, оставляя это на усмотрение приложения.
...