Может кто-нибудь объяснить, что означают все коды? ПИТОН [закрыто]

У меня есть несколько потоков, одновременно вызывающих push_back () на общем объекте std :: vector. Является ли std :: vector thread safe?

Это небезопасно.

Или мне нужно реализовать механизм сам, чтобы сделать его потокобезопасным?

Да.

Я хочу избежать выполнения дополнительной операции «блокировки и освобождения», потому что я являюсь пользователем библиотеки, а не разработчиком библиотеки. Я надеюсь найти существующие поточно-безопасные решения для вектора.

Ну, векторный интерфейс не является оптимальным для одновременного использования. Это нормально, если клиент имеет доступ к блокировке, но для интерфейса для абстрактной блокировки для каждой операции - нет. Фактически, интерфейс вектора не может гарантировать безопасность потока без внешней блокировки (предполагая, что вам нужны операции, которые также мутируют).

Как насчет boost :: vector, который был недавно введен с boost 1.48.0 onward ,

Состояние документов:

//! boost::container::vector is similar to std::vector but it's compatible
//! with shared memory and memory mapped files.
-9
задан cheese 20 September 2015 в 23:19
поделиться