Linux (カーネル 2.6.5) では、ビルド システムは gcc を-D_REENTRANT
.
を使用する場合、これはまだ必要pthreads
ですか?
gcc -pthread
オプションとの関係は?pthreads で使用する必要があることは理解しています-pthread
が、それでも必要-D_REENTRANT
ですか?
余談ですが、 gcc 3.3.3 と gcc 4.xx の間で REENTRANT を使用する際に知っている違いはありますか?
gcc オプションを使用すると、それが定義され-pthread
ていることがわかります。_REENTRANT
コマンドラインを省略-D_REENTRANT
しても違いはありますか? たとえば、一部のオブジェクトがマルチスレッドのサポートなしでコンパイルされ、pthreads を使用するバイナリにリンクされて問題が発生する可能性がありますか?
使用するだけで問題ないと思います: g++ -pthread
> echo | g++ -E -dM -c - > singlethreaded
> echo | g++ -pthread -E -dM -c - > multithreaded
> diff singlethreaded multithreaded
39a40
> #define _REENTRANT 1
静的ライブラリとリンクする複数の静的ライブラリとアプリケーションをコンパイルしています。ライブラリとアプリケーションの両方が pthread を使用します。
過去のある段階で必要だったと思いますが、まだ必要かどうかを知りたいです。グーグルで言及した最近の情報は返されていません - D_REENTRANT
with pthreads
. kernel/gcc/pthreadの最近のバージョンでの使用について議論しているリンクまたは参考文献を教えていただけますか?
明確化: 現在、-D_REENTRANT と -lpthread を使用していますが、g++ -pthread だけで置き換えることができると思います。man gcc を見ると、プリプロセッサとリンカの両方のフラグが設定されています。何かご意見は?