Using the Poco C++ Library, how can I pass data to a thread?
-
11-12-2019 - |
Question
So my question actually has several parts:
Using the Poco Threading Library:
- What are all of the possible methods for passing data to threads (at both thread invocation and for an already running thread).
- Which methods are preferred by you and why? Can you provide any additional information about your experience using these methods?
- Which methods are recommended by Applied Informatics (the author of Poco)? Is there any additional documentation supplied by Applied Informatics that outlines passing arguments to threads?
I've looked here already:
- http://pocoproject.org/docs/package-Foundation.Threading-index.html
- http://pocoproject.org/slides/130-Threads.pdf
Thanks in advance...
Solution
The canonical way of passing arguments to a new thread is via the Runnable subclass you'll need to create as thread entry point. Example:
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();
For passing data to an already running thread, what's the best solution depends on your requirements. For a typical worker thread scenario, consider using Poco::NotificationQueue. A complete sample with explanations can be found here: http://pocoproject.org/slides/090-NotificationsEvents.pdf
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow