[C++] ワーカースレッドパターン(WorkerThread)が使いたい

プログラミングをしていて、使えるパターンにWorkerThreadパターンがあります。 処理をRequestとしてChannelに登録して順次処理してもらいます。 C++で上記の処理を実現したい時に、Pocoフレームワークを使うと簡単に実現する事ができます。 | クラス | 説明 | |---------|----------------------------------------| | Channel | 処理を受け付けるクラス | | Request | 処理を表す、サブクラスで処理を定義する | | Worker | 実際に処理を行うクラス | 使い方は以下の感じです。ソースコードは[Github](https://github.com/k28/poco_channel.git)をご覧ください。 ```cpp `gutter:true; #include "request.h" #include "channel.h" #include <iostream> #include <Poco/Thread.h> using namespace htn; class PrintRequest : public Request { public: PrintRequest(int index) :index_(index) { }; ~PrintRequest() {}; virtual void Execute() { int val = Poco::Thread::currentTid(); { std::cout << "Execute [" << std::to_string(val) << "]" << std::to_string(index_) << std::endl; } Poco::Thread::sleep(100); }; int index_; }; int main(int argc, char const* argv[]) { std::cout << "hello world" << std::endl; { Channel channel(3); for (int i = 0; i < 100; i++) { channel.PutRequest(new PrintRequest(i)); } Poco::Thread::sleep(10 * 1000); } return 0; } ```

0 件のコメント :

コメントを投稿