「boost::thread 2つのスレッドを動かすシンプルな例」の版間の差分
提供: C++入門
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == boost threadで2つのスレッドだけを生成するシンプルな例です。 == boost_thread_2.cpp...」) |
|||
(同じ利用者による、間の7版が非表示) | |||
行1: | 行1: | ||
− | + | [[boost::thread]]で2つのスレッドだけを生成するシンプルな例です。 | |
− | + | ||
− | + | ||
+ | '''読み方''' | ||
+ | ;[[boost::thread]]:ぶーすと すれっど | ||
__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> | ||
行44: | 行41: | ||
return 0; | return 0; | ||
} | } | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | === | + | === コンパイル === |
− | + | ||
<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 | ||
− | void thread_1()void thread_2() | + | void thread_1() |
− | + | void thread_2() | |
void thread_2() | void thread_2() | ||
void thread_1() | void thread_1() | ||
行67: | 行62: | ||
void thread_1() | void thread_1() | ||
void thread_2() | void thread_2() | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | + | * [[boost::thread]] | |
− | * [[boost thread]] | + | |
* [[C++ライブラリ]] | * [[C++ライブラリ]] | ||
* [[Boost]] | * [[Boost]] | ||
+ | === std::thread === | ||
+ | {{thread}} | ||
+ | === std::mutex === | ||
+ | {{mutex}} | ||
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2014年9月28日 (日) 11:44時点における最新版
boost::threadで2つのスレッドだけを生成するシンプルな例です。
読み方
- boost::thread
- ぶーすと すれっど
目次
概要
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 | 指定した時刻まで、現在のスレッドの実行を停止します。 |
std::mutex
mutexの種類 | 説明 |
---|---|
std::mutex | 非再帰的mutex |
std::recursive_mutex | 再帰的mutext |
std::timed_mutex | ロック関数でタイムアウトが可能な非再帰的mutex |
std::recursive_timed_mutex | ロック関数でタイムアウトが可能な再帰的mutex |
ロッククラステンプレート