3 #ifndef INCLUDE_NN_NLIB_THREADING_THREADPOOL_H_
4 #define INCLUDE_NN_NLIB_THREADING_THREADPOOL_H_
25 class ThPoolTask : public ThPoolTaskBase {
31 virtual void operator()() NLIB_NOEXCEPT
NLIB_OVERRIDE { m_Task(); }
34 PackagedTask<R()> m_Task;
45 return this->Init(numThreads, settings);
51 template <class R, class FUNC>
53 size_t Count() NLIB_NOEXCEPT {
return m_ThreadList.size(); }
67 template <
class R,
class FUNC>
81 bool result = m_WorkQueue.push_back_swap(&pTask);
89 return result ? 0 : ENOMEM;
98 #endif // INCLUDE_NN_NLIB_THREADING_THREADPOOL_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
ThreadPool() noexcept
デフォルトコンストラクタです。Init()で初期化する必要があります。
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
std::queueに似た、コピーコンストラクタを持たないオブジェクトを格納可能なコンテナ類似クラスです。 ...
UniquePtrはポインタの所有権を保持し、UniquePtrがスコープから出るときにデストラクタでポインタをDELで指...
std::unique_ptrに相当するクラスが定義されています。
nlib_thread_attrをラップするクラスです。必要に応じて自動的にnlib_thread_attr_init()とnlib_thread_attr...
errno_t GetFuture(Future< R > *p) noexcept
実行結果を取得するためのFutureを設定します。
errno_t Init() noexcept
スレッドを起動してスレッドプールを初期化します。
別のスレッド実行の出力をスレッドセーフに取得するためのクラスです。C++11のstd::shared_futureに似ていま...
errno_t Init(size_t numThreads) noexcept
スレッドを起動してスレッドプールを初期化します。
size_t GetHardwareConcurrency() noexcept
ハードウェアスレッドの数を返します。
関数をラップし、別スレッドで実行し戻り値をスレッドセーフに取得できるようにするクラスです。C++11のstd:...
マルチスレッドプログラミングのためのFutureパターンを実装しています。
予めプールされた作成済みのスレッドに対してタスクを投入することができます。
errno_t Init(FUNC &func)
初期化を行います。