使用Poco C ++库,如何将数据传递给线程?

时间:2012-07-25 22:11:56

标签: c++ multithreading argument-passing poco-libraries

所以我的问题实际上有几个部分:

使用Poco线程库:

  1. 将数据传递给线程的所有可能方法是什么(在线程调用和已经运行的线程中)。
  2. 您最喜欢哪种方法?为什么?您能否提供有关使用这些方法的经验的任何其他信息?
  3. Applied Informatics(Poco的作者)推荐哪些方法? Applied Informatics是否提供了任何其他文档,概述了将参数传递给线程?
  4. 我已经看过这里了:

    提前致谢...

1 个答案:

答案 0 :(得分:16)

将参数传递给新线程的规范方法是通过您需要创建的线程入口点的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