mirror of
https://github.com/pocoproject/poco.git
synced 2025-11-26 00:40:05 +01:00
added support for starting functors/lambdas to Poco::Thread class
This commit is contained in:
@@ -38,6 +38,57 @@
|
||||
namespace Poco {
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class RunnableHolder: public Runnable
|
||||
{
|
||||
public:
|
||||
RunnableHolder(Runnable& target):
|
||||
_target(target)
|
||||
{
|
||||
}
|
||||
|
||||
~RunnableHolder()
|
||||
{
|
||||
}
|
||||
|
||||
void run()
|
||||
{
|
||||
_target.run();
|
||||
}
|
||||
|
||||
private:
|
||||
Runnable& _target;
|
||||
};
|
||||
|
||||
|
||||
class CallableHolder: public Runnable
|
||||
{
|
||||
public:
|
||||
CallableHolder(Thread::Callable callable, void* pData):
|
||||
_callable(callable),
|
||||
_pData(pData)
|
||||
{
|
||||
}
|
||||
|
||||
~CallableHolder()
|
||||
{
|
||||
}
|
||||
|
||||
void run()
|
||||
{
|
||||
_callable(_pData);
|
||||
}
|
||||
|
||||
private:
|
||||
Thread::Callable _callable;
|
||||
void* _pData;
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
Thread::Thread():
|
||||
_id(uniqueId()),
|
||||
_name(makeName()),
|
||||
@@ -76,13 +127,13 @@ Thread::Priority Thread::getPriority() const
|
||||
|
||||
void Thread::start(Runnable& target)
|
||||
{
|
||||
startImpl(target);
|
||||
startImpl(new RunnableHolder(target));
|
||||
}
|
||||
|
||||
|
||||
void Thread::start(Callable target, void* pData)
|
||||
{
|
||||
startImpl(target, pData);
|
||||
startImpl(new CallableHolder(target, pData));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user