- 締切済み
STLをマルチスレッドで使いたい
STL(のようなもの)をマルチスレッドで使いたいと考えています。 STL自体はスレッドセーフじゃないとのことですが、 変わりのライブラリとか無いのでしょうか? こんなの使ったよとか、こういうやり方したよとか、あれば教えてください。 言語:C++ 環境は何でもいいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 商用利用可能な環境でないとちょっと難しいです。 Intel TBBは商用版もあります。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 複数のスレッドが同じコンテナに同時アクセスしてしまう可能性があるなら、 > クリティカルセクションで対応できますし、 > スレッド同士のコンテナ操作のタイミングを調整したい場合には、ミューテックスなどが使えると思います。 とはいえ要注意。 コンテナを複数のスレッドでアクセスするとき、一方が取得したイテレータを他方の操作で無効にしてしまうことがあります。クリティカルセクション/ミューテックス等でこれ(イテレータの無効化)を抑止することはできません。 > また、環境は何でもいい、ということならインテルのTBBを使用する方法もあります。 > ・スレッドセーフとインテルTBBのコンテナ > http://codezine.jp/article/detail/4861 この記事を鵜呑みにしないこと。 コメントに記事の欠陥が指摘されています。 本家 http://threadingbuildingblocks.org/ にあるドキュメントを一読することをお薦めします。
クリティカルセクションやミューテックスを使用してみては? 複数のスレッドが同じコンテナに同時アクセスしてしまう可能性があるなら、 クリティカルセクションで対応できますし、 スレッド同士のコンテナ操作のタイミングを調整したい場合には、ミューテックスなどが使えると思います。 また、環境は何でもいい、ということならインテルのTBBを使用する方法もあります。 ・スレッドセーフとインテルTBBのコンテナ http://codezine.jp/article/detail/4861 参考にしてみて下さい。
補足
すみません。説明が不足していました。 商用利用可能な環境でないとちょっと難しいです。 よろしくお願いいたします。