デザインパターン(マルチスレッド)まとめ
- Single Threaded Execution
- Immutable
- Guarded Suspension
- メモ
- Balking
- メモ
- Producer-Consumer
- メモ
- Read-Write Lock
- メモ
- Thread-Per-Message
- メモ
- Worker Thread
- メモ
- Future
- メモ
- Two-Phase Termination
- メモ
- Thread-Specific Storage
- メモ
- Active Object
- メモ
ちなみに頻繁にインクルードされている "../thread_helper.h" というのは以下の内容になっています。
#ifndef MTDP_THREAD_HELPER_H_INCLUDED #define MTDP_THREAD_HELPER_H_INCLUDED #include <boost/thread.hpp> #include <boost/lexical_cast.hpp> #include <iostream> #include <cstddef> namespace mtdp { struct thread_helper { static void sleep(std::size_t ms) { boost::xtime::xtime_sec_t sec = (boost::xtime::xtime_sec_t)(ms / 1000); boost::xtime::xtime_nsec_t nsec = (boost::xtime::xtime_nsec_t)((ms % 1000) * 1000 * 1000); boost::xtime xt; boost::xtime_get(&xt, boost::TIME_UTC); xt.sec += sec; xt.nsec += nsec; boost::thread::sleep(xt); } template<class T> static void shared_cout(T& value) { static boost::mutex mutex; boost::mutex::scoped_lock lock(mutex); std::cout << value; } }; template<class T> std::string to_string(const T& value) { return boost::lexical_cast<std::string>(value); } } #endif // MTDP_THREAD_HELPER_H_INCLUDED