10

したがって、私の質問には実際にはいくつかの部分があります。

Pocoスレッドライブラリの使用:

  1. スレッドにデータを渡すために可能なすべての方法は何ですか(スレッドの呼び出しとすでに実行されているスレッドの両方で)。
  2. どの方法があなたに好まれ、その理由は何ですか?これらの方法を使用した経験について、追加情報を提供できますか?
  3. Applied Informatics(Pocoの作者)が推奨する方法はどれですか?スレッドへの引数の受け渡しの概要を説明する、Applied Informaticsが提供する追加のドキュメントはありますか?

私はすでにここを見ました:

前もって感謝します...

4

1 に答える 1

19

新しいスレッドに引数を渡す標準的な方法は、スレッドエントリポイントとして作成する必要があるRunnableサブクラスを使用することです。例:

class MyThread: public Poco::Runnable
{
public:
    MyThread(const std::string& arg1, int arg2):
        _arg1(arg1),
        _arg2(arg2)
    {
    }

    void run()
    {
        // use _arg1 and _arg2;
        //...
    }

private:
    std::string _arg1;
    int _arg2;
};

//...

MyThread myThread("foo", 42);
Poco::Thread thread;
thread.start(myThread);
thread.join();

すでに実行中のスレッドにデータを渡す場合、最適なソリューションは要件によって異なります。典型的なワーカースレッドのシナリオでは、Poco::NotificationQueueの使用を検討してください。説明付きの完全なサンプルはここにあります:http://pocoproject.org/slides/090-NotificationsEvents.pdf

于 2012-07-25T23:30:41.407 に答える