3

Linux でマルチスレッドの C++ プログラムを作成しようとしています。以前に Windows で pthreads ライブラリを使用したことがありますが、Linux では標準ではないと聞いています。Linux で c++ を使用する場合、どのスレッド ライブラリをお勧めしますか? どのようなオプションがあり、何が最も一般的で、通常最も速いのは何ですか? ありがとう!

編集:私が言ったように、pthreadsがLinuxにネイティブではないことについて誤解していました。それは少し前に聞いたことです。私は主に、さまざまなスレッド オプションの効率の比較を探していました。特に、c-11 スレッド ライブラリと以前に使用した pthreads のパフォーマンスに関する情報に興味がありました。私は誤解されていたので、より多くの情報を得るためにこの質問を投稿しました。意地悪する必要はありません。

4

2 に答える 2

5

C++11 を使用している場合は、std::thread. そうするのはかなり簡単です。例えば:

#include <thread>

void thread_entry(int foo, int bar)
{
    int result = foo + bar;
    // Do something with that, I guess
}


// Elsewhere in some part of the galaxy
std::thread thread(thread_entry, 5, 10);
// And probably
thread.detach();

// Or
std::thread(thread_entry).detach();

これは単純で、ほとんどの目的には十分です (ただし、実装によっては、pthreads に依存する場合があります)。

そうでない場合は、使い慣れている pthreads を使用してください。これは、ほとんどの Linux ディストリビューションがほぼ準拠している POSIX 標準の一部です。少なくとも、相違点が問題にならないほど十分に準拠しています。

于 2013-06-08T22:21:12.570 に答える
2

特に「windowsy」を行っていないと仮定すると、pthreads を使用する Windows コードは、Linux またはその他の形式の Unix でまったく同じように動作するはずです (pthreads が導入されてからの過去 10 年ほどのように、合理的に最新のものである限り)。 )。

もちろん、を使用することもできます。std::threadこれは C++11 でサポートされているためです。非常に古いバージョンの g++ を使用していない限り、必要なものをオブジェクト指向インターフェイスで提供する必要があります。また、これは動作するはずです。 Windows と Linux は同等です (もちろん、最新の十分なコンパイラと標準ライブラリが必要です)。

于 2013-06-08T22:22:45.273 に答える