Boost.Thread

Boost 1.35.0 の Boost.Thread を翻訳してみた

Memo/翻訳/Boost.Thread 現在の翻訳ソフトの精度に感動。 翻訳ソフトに英語を教えてもらいながら翻訳してます。 次は何を翻訳するかな−。

スレッドの同期呼び出し

を作ってみた。 #ifndef ANMELT_THREAD_INVOKE_H_INCLUDED #define ANMELT_THREAD_INVOKE_H_INCLUDED // Boost #include <boost/thread.hpp> #include <boost/optional.hpp> #include <boost/noncopyable.hpp> #include <boost/ref.hpp> #include <boost/utility/enable_if.hpp> #include <boost/utility/result_of.hpp> #include …</boost/utility/result_of.hpp></boost/utility/enable_if.hpp></boost/ref.hpp></boost/noncopyable.hpp></boost/optional.hpp></boost/thread.hpp>

スレッドプール

Worker Thread パターンでスレッドプールを作ってみた。 worker_thread.h #ifndef ANMELT_THREAD_WORKER_THREAD_H_INCLUDED #define ANMELT_THREAD_WORKER_THREAD_H_INCLUDED // Boost #include <boost/thread.hpp> #include <boost/shared_ptr.hpp> #include <boost/function.hpp> #include <boost/bind.hpp> #include </boost/bind.hpp></boost/function.hpp></boost/shared_ptr.hpp></boost/thread.hpp>

汎用的な Balking コンテナ

を作ってみた。 #ifndef ANMELT_THREAD_BALKING_CONTAINER_H_INCLUDED #define ANMELT_THREAD_BALKING_CONTAINER_H_INCLUDED // Boost #include <boost/thread.hpp> namespace anmelt{ namespace thread { template<class Container, class Adapter> class balking_container { private: Container container_; </class></boost/thread.hpp>…

汎用的な Blocking コンテナ

を作ってみた。 #ifndef ANMELT_THREAD_BLOCKING_CONTAINER_H_INCLUDED #define ANMELT_THREAD_BLOCKING_CONTAINER_H_INCLUDED // Boost #include <boost/thread.hpp> namespace anmelt{ namespace thread { template<class Container, class Adapter> class blocking_container { private: Container container</class></boost/thread.hpp>…

既存のオブジェクトをスレッドセーフにする

こんなの作ってみました。 #ifndef ANMELT_THREAD_MUTEXED_H_INCLUDED #define ANMELT_THREAD_MUTEXED_H_INCLUDED #include <boost/thread.hpp> #include <boost/utility/enable_if.hpp> #include <boost/utility/result_of.hpp> #include <boost/type_traits/is_void.hpp> namespace anmelt{ namespace thread { template</boost/type_traits/is_void.hpp></boost/utility/result_of.hpp></boost/utility/enable_if.hpp></boost/thread.hpp>

Active Object

デザインパターン(マルチスレッド)まとめ 非同期のメッセージを受け取り、それを能動的に処理を行い、結果を返すパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。

Thread-Specific Storage

デザインパターン(マルチスレッド)まとめ スレッド固有の領域を扱うパターン。 Boost.Thread には boost::thread_specific_ptr というクラスがあるので、これを使えば実現できる。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編…

Two-Phase Termination

デザインパターン(マルチスレッド)まとめ 強制的に外部から終了するのではなく、終了要求だけ出しておいて自分で終了してもらうようにするパターン。 終了要求を出して(1段階目)、実際に終了する(2段階目)という2つの段階を経て終了するので、この…

async_delegate

汎用的に非同期メッセージを投げて戻り値を返してくれるクラスを作りました。 async_delegate::invoke に関数を設定すると、その関数を別スレッドから呼び出します。 async_delegate::invoke の戻り値である async_result_ptr を使って、同期処理を行い、呼…

Boost.Thread に interrupt 機構は無い

Java の interrupt 機構みたいなのは Boost.Thread に無いみたいなんですね。 いろいろ調べてみた結果 interruptable_mutex.h というのが存在するということが分かったのですが、いまいち使い方が分かりません。 あとスペルは interruptable ではなくて inte…

Future

デザインパターン(マルチスレッド)まとめ 非同期メッセージの戻り値を受け取るためのパターン これ、C# の同期メソッドの非同期呼び出しで使われてるパターンと同じなのかな。 data クラスは IAsyncResult に対応して、host クラスは Begin〜, End〜 を持…

Worker Thread

デザインパターン(マルチスレッド)まとめ スレッドを起動する時間をケチるのと、スレッド数の管理を行うパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。 これ、reques…

Thread-Per-Message

デザインパターン(マルチスレッド)まとめ 非同期メッセージの投げっぱなしバージョン。 戻り値が欲しい場合は Future パターンを使用する。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書い…

Read-Write Lock

デザインパターン(マルチスレッド)まとめ 書き込みを行っている場合にだけ排他制御を行うパターン。 Boost には read_write_mutex というのがあって、これを使えば Read-Write Lock を実現することがでk……ってバージョン1.34.1 だとドキュメントにはある…

Producer-Consumer

デザインパターン(マルチスレッド)まとめ あるスレッドから別のスレッドにデータを渡すためのパターン。 というか Guarded Suspension とどう違うのかよく分かんない。 中身はほとんど同じだけど、その目的が違うのかなぁ……。 以下は増補改訂版 Java言語で…

Balking

デザインパターン(マルチスレッド)まとめ 適切な状態になっていないなら処理を中断する、というパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。 save, doSave メソッ…

Guarded Suspension

デザインパターン(マルチスレッド)まとめ 適切な状態になっていないならスレッドを待たせる、というパターン。 boost::condition を使って実現することが出来る。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boos…

Immutable

デザインパターン(マルチスレッド)まとめ 読み取りしかしないなら排他制御を行う必要がない、というパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。

Single Threaded Execution

デザインパターン(マルチスレッド)まとめ 同時に実行できるスレッドを1つだけにするパターン。 boost::mutex と boost::mutex::scoped_lock を使えばいい。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thr…

デザインパターン(マルチスレッド)まとめ

Single Threaded Execution メモ Immutable メモ Guarded Suspension メモ Balking メモ Producer-Consumer メモ Read-Write Lock メモ Thread-Per-Message メモ Worker Thread メモ Future メモ Two-Phase Termination メモ Thread-Specific Storage メモ A…