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>
を作ってみた。 #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>…
を作ってみた。 #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>
デザインパターン(マルチスレッド)まとめ 非同期のメッセージを受け取り、それを能動的に処理を行い、結果を返すパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。
デザインパターン(マルチスレッド)まとめ スレッド固有の領域を扱うパターン。 Boost.Thread には boost::thread_specific_ptr というクラスがあるので、これを使えば実現できる。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編…
デザインパターン(マルチスレッド)まとめ 強制的に外部から終了するのではなく、終了要求だけ出しておいて自分で終了してもらうようにするパターン。 終了要求を出して(1段階目)、実際に終了する(2段階目)という2つの段階を経て終了するので、この…
汎用的に非同期メッセージを投げて戻り値を返してくれるクラスを作りました。 async_delegate::invoke に関数を設定すると、その関数を別スレッドから呼び出します。 async_delegate::invoke の戻り値である async_result_ptr を使って、同期処理を行い、呼…
Java の interrupt 機構みたいなのは Boost.Thread に無いみたいなんですね。 いろいろ調べてみた結果 interruptable_mutex.h というのが存在するということが分かったのですが、いまいち使い方が分かりません。 あとスペルは interruptable ではなくて inte…
デザインパターン(マルチスレッド)まとめ 非同期メッセージの戻り値を受け取るためのパターン これ、C# の同期メソッドの非同期呼び出しで使われてるパターンと同じなのかな。 data クラスは IAsyncResult に対応して、host クラスは Begin〜, End〜 を持…
デザインパターン(マルチスレッド)まとめ スレッドを起動する時間をケチるのと、スレッド数の管理を行うパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。 これ、reques…
デザインパターン(マルチスレッド)まとめ 非同期メッセージの投げっぱなしバージョン。 戻り値が欲しい場合は Future パターンを使用する。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書い…
デザインパターン(マルチスレッド)まとめ 書き込みを行っている場合にだけ排他制御を行うパターン。 Boost には read_write_mutex というのがあって、これを使えば Read-Write Lock を実現することがでk……ってバージョン1.34.1 だとドキュメントにはある…
デザインパターン(マルチスレッド)まとめ あるスレッドから別のスレッドにデータを渡すためのパターン。 というか Guarded Suspension とどう違うのかよく分かんない。 中身はほとんど同じだけど、その目的が違うのかなぁ……。 以下は増補改訂版 Java言語で…
デザインパターン(マルチスレッド)まとめ 適切な状態になっていないなら処理を中断する、というパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。 save, doSave メソッ…
デザインパターン(マルチスレッド)まとめ 適切な状態になっていないならスレッドを待たせる、というパターン。 boost::condition を使って実現することが出来る。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boos…
デザインパターン(マルチスレッド)まとめ 読み取りしかしないなら排他制御を行う必要がない、というパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。
デザインパターン(マルチスレッド)まとめ 同時に実行できるスレッドを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…