「boost::thread 2つのスレッドを動かすシンプルな例」の版間の差分

提供: C++入門
移動: 案内検索
行1: 行1:
<!--
+
[[boost::thread]]で2つのスレッドだけを生成するシンプルな例です。
vim: filetype=mediawiki
+
-->
+
  
 
__TOC__
 
__TOC__
  
 
== 概要 ==
 
== 概要 ==
 
 
[[boost::thread]]で2つのスレッドだけを生成するシンプルな例です。
 
[[boost::thread]]で2つのスレッドだけを生成するシンプルな例です。
  
 
== boost_thread_2.cpp の例==
 
== boost_thread_2.cpp の例==
 
 
=== ソースコード boost_thread_2.cpp ===
 
=== ソースコード boost_thread_2.cpp ===
 
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 
#include <boost/thread.hpp>
 
#include <boost/thread.hpp>
行47: 行42:
  
 
=== 繧?ンパイル ===
 
=== 繧?ンパイル ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
g++ -I/usr/local/include -L/usr/local/lib -Lboost_thread boost_thread_2.cpp -o boost_thread_2
+
g++ -I/usr/local/include -L/usr/local/lib \
 +
-Lboost_thread boost_thread_2.cpp -o boost_thread_2
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== 実行例 ===
 
=== 実行例 ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
% ./boost_thread_2
 
% ./boost_thread_2
行69: 行63:
  
 
== 関連項目 ==
 
== 関連項目 ==
 
 
* [[boost::thread]]
 
* [[boost::thread]]
 
* [[C++ライブラリ]]
 
* [[C++ライブラリ]]
 
* [[Boost]]
 
* [[Boost]]
 +
{{thread}}
 +
{{mutex}}
 +
<!-- vim: filetype=mediawiki -->

2014年1月3日 (金) 16:16時点における版

boost::threadで2つのスレッドだけを生成するシンプルな例です。

概要

boost::threadで2つのスレッドだけを生成するシンプルな例です。

boost_thread_2.cpp の例

ソースコード boost_thread_2.cpp

#include <boost/thread.hpp>
#include <iostream>
#define MAX 5
 
void
thread_1 () {
        for (int i = 0; i < MAX; i++) {
                std::cout << __PRETTY_FUNCTION__ << std::endl;
                boost::this_thread::sleep(boost::posix_time::milliseconds(100));
        }
}
void
thread_2 () {
        for (int i = 0; i < MAX; i++) {
                std::cout << __PRETTY_FUNCTION__ << std::endl;
                boost::this_thread::sleep(boost::posix_time::milliseconds(100));
        }
}
 
int
main(int argc, char const* argv[])
{
        boost::thread th1(thread_1);
        boost::thread th2(thread_2);
 
        th1.join ();
        th2.join ();
 
        return 0;
}

繧?ンパイル

g++ -I/usr/local/include -L/usr/local/lib \
-Lboost_thread boost_thread_2.cpp -o boost_thread_2

実行例

% ./boost_thread_2
void thread_1()
void thread_2()
void thread_2()
void thread_1()
void thread_2()
void thread_1()
void thread_1()
void thread_2()
void thread_1()
void thread_2()

関連項目

std::thread メンバ関数
関数 説明
メンバ関数
std::thread::thread コンストラクタ。threadオブジェクトを作成します。
std::thread::~thread スレッドがjoinかdetachされている必要があります。スレッドオブジェクトを破棄します。
std::thread::operator= スレッドオブジェクトをmoveします。
オブザーバー
std::thread::joinable スレッドが合流可能であるかチェックします。
std::thread::get_id スレッドのIDを返します。
std::thread::native_handle スレッドハンドルを返します。
std::thread::hardware_concurrency 実装によってサポートされる同時スレッド数を返します。
操作
std::thread::join スレッドの終了を待ちます。
std::thread::detach スレッドハンドルから独立して実行するスレッドを許可します。
std::thread::swap スワップ
非メンバ関数
std::swap スワップ
カレントスレッドの管理
std::this_thread::yield_id 処理系に再スケジュールの機会を与えます。
std::this_thread::get_id スレッドIDを返します。
std::this_thread::sleep_for 指定した時間、現在のスレッドの実行を停止します。
std::this_thread::sleep_until 指定した時刻まで、現在のスレッドの実行を停止します。
mutex
mutexの種類 説明
std::mutex 非再帰的mutex
std::recursive_mutex 再帰的mutext
std::timed_mutex ロック関数でタイムアウトが可能な非再帰的mutex
std::recursive_timed_mutex ロック関数でタイムアウトが可能な再帰的mutex

ロッククラステンプレート