• 締切済み

STLをマルチスレッドで使いたい

STL(のようなもの)をマルチスレッドで使いたいと考えています。 STL自体はスレッドセーフじゃないとのことですが、 変わりのライブラリとか無いのでしょうか? こんなの使ったよとか、こういうやり方したよとか、あれば教えてください。 言語:C++ 環境は何でもいいです。

みんなの回答

回答No.3

> 商用利用可能な環境でないとちょっと難しいです。 Intel TBBは商用版もあります。

参考URL:
http://www.xlsoft.com/jp/products/intel/perflib/tbb/index.html
回答No.2

> 複数のスレッドが同じコンテナに同時アクセスしてしまう可能性があるなら、 > クリティカルセクションで対応できますし、 > スレッド同士のコンテナ操作のタイミングを調整したい場合には、ミューテックスなどが使えると思います。 とはいえ要注意。 コンテナを複数のスレッドでアクセスするとき、一方が取得したイテレータを他方の操作で無効にしてしまうことがあります。クリティカルセクション/ミューテックス等でこれ(イテレータの無効化)を抑止することはできません。 > また、環境は何でもいい、ということならインテルのTBBを使用する方法もあります。 > ・スレッドセーフとインテルTBBのコンテナ > http://codezine.jp/article/detail/4861 この記事を鵜呑みにしないこと。 コメントに記事の欠陥が指摘されています。 本家 http://threadingbuildingblocks.org/ にあるドキュメントを一読することをお薦めします。

noname#136000
noname#136000
回答No.1

クリティカルセクションやミューテックスを使用してみては? 複数のスレッドが同じコンテナに同時アクセスしてしまう可能性があるなら、 クリティカルセクションで対応できますし、 スレッド同士のコンテナ操作のタイミングを調整したい場合には、ミューテックスなどが使えると思います。 また、環境は何でもいい、ということならインテルのTBBを使用する方法もあります。 ・スレッドセーフとインテルTBBのコンテナ http://codezine.jp/article/detail/4861 参考にしてみて下さい。

darum
質問者

補足

すみません。説明が不足していました。 商用利用可能な環境でないとちょっと難しいです。 よろしくお願いいたします。

関連するQ&A