2012-04-13 4 views
2

私はクラスmain.cppMyClass.cppを持っています。C++で基本スレッドを作成する方法

main.cppには、たくさんのコードがあります。しかし、上部にはMyClassオブジェクトが作成され、次にMyClassにあるスレッドを開始したいと考えています。私は関数Run()を呼び出すと同時に、関数を残りの関数がmain.cppで実行されるようにしたいと思います。

C++でこれを行う最も簡単な方法は何ですか?私はC++でスレッディングを行ったことはありませんが、私はJavaでこれを行っています。

可能であれば、外部パッケージなどは使用しないでください。

+5

を、あなたはネイティブのマルチスレッドを含んでいるC++のバージョンを使用していますか?そうでない場合は、どのプラットフォームをターゲットにしていますか? (私の強いアドバイスは、[Boost](http://boost.org)を使用することです。はい、外部パッケージですが、移植性が高く、よく作られており、より良いコードにつながります。 –

答えて

1

#include <future> 

int main() { 
    MyClass mc; 
    auto future = std::async(MyClass::Run,&mc); 
    ... 
} 
2

C++言語自体にはスレッド*という概念はありません。 C++でマルチスレッド化されたプログラムを書くことはできますが、プラットフォーム固有のスレッドライブラリを使用することになります。たとえば、Linuxシステムでは "pthreads"ライブラリを使用できます。あなたのターゲットプラットフォームは何ですか?

*新しいC++ 11仕様で追加された拡張機能は、スレッドの標準化されたサポートを追加しますが、多くのコンパイラーと標準ライブラリはこのバージョンの標準をまだ実装していません。

4

最も簡単な方法は、boost threadライブラリを使用することです。標準C++使用

#include <boost/thread.hpp> 
#include <boost/bind.hpp> 

... 

int main() 
{ 
    ... 
    MyClass mc; 
    boost::thread bt(boost::bind(MyClass::Run, &mc)); 
    ... 
    bt.join(); 
    ... 
} 
関連する問題