2012-02-29 14 views
0

http://sunsite.ualberta.ca/Documentation/Gnu/libstdc++-2.90.8/html/configopts.htmlというオプションがそこに説明されていますが、stlはスレッドセーフであり、デフォルトではそうですか?gcc/g ++/libstdC++のコンパイル時に--enable-threads = LIBとは何を意味しますか?

+2

リンクのテキストを読むと、スレッドの安全性とは関係ありませんが、基礎となるスレッドシステムを使用する必要があります。 –

+1

上記のように、私はそれだけでよく、標準オブジェクトはマルチリード、シングルライトであると仮定します。マルチスレッドがいくつかのstd :: mutexを設定している場合。 – 111111

答えて

3

素晴らしいマニュアルを読んで、公式のGCCウェブサイトで最新版を読んでください。古代版を参照している文書の12年前のコピーではありません! --enable-threadsの現在のドキュメントはhttp://gcc.gnu.org/install/configure.htmlであるとのlibstdC++がスレッドセーフであるかどうかを説明する文書がhttp://gcc.gnu.org/onlinedocs/libstdc++/manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety

であるあなたは、SOに尋ねると、あなたは誰が人から回答を得ることを望んより公式ドキュメントを参照してより良い答えを得るでしょう実際に彼らが話していることを知っている。

1)あなたが尋ねるオプションはGCCにのみ影響するので、明らかにGCCの標準ライブラリに影響します。一般的にstlのスレッドの安全性については何も言及していません。で説明したように)http://www.sgi.com/tech/stl/thread_safety.html

3:

2)ほとんどのC++ 03 GCCのを含め、ライブラリの実装()およびすべてのC++ 11のライブラリの実装では、STLのSGI実装によって使用されるスレッドの安全性の定義に従ってくださいGCCの標準ライブラリは、複数のスレッドからオブジェクトにアクセスしないという単純なルールに従えば、それには影響しません。--enable-threadsそれが影響を与えるのは、内部mutexを実装し、libstdC++によって内部的に必要とされる機能を実装するために使用される基礎となるマルチスレッドAPIです(上記のコメントに記載されています)。のみサポートされているオプションは--enable-threads=single--disable-threadsに相当)または(例えばPOSIXプラットフォーム--enable-threads=posixに、Windowsの--enable-threads=win32上)ネイティブスレッドモデルとなりますので、あなたはおそらくないだけでGCCを聞かせて、そのオプションを使用したいんほぼすべてのプラットフォームでプラットフォームのデフォルト値を選択します。

関連する問題