1 //
2 // ActiveStarter.h
3 //
4 // Library: Foundation
5 // Package: Threading
6 // Module:  ActiveObjects
7 //
8 // Definition of the ActiveStarter class.
9 //
10 // Copyright (c) 2006-2007, Applied Informatics Software Engineering GmbH.
11 // and Contributors.
12 //
13 // SPDX-License-Identifier:	BSL-1.0
14 //
15 
16 
17 #ifndef Foundation_ActiveStarter_INCLUDED
18 #define Foundation_ActiveStarter_INCLUDED
19 
20 
21 #include "Poco/Foundation.h"
22 #include "Poco/ThreadPool.h"
23 #include "Poco/ActiveRunnable.h"
24 
25 
26 namespace Poco {
27 
28 
29 template <class OwnerType>
30 class ActiveStarter
31 	/// The default implementation of the StarterType
32 	/// policy for ActiveMethod. It starts the method
33 	/// in its own thread, obtained from the default
34 	/// thread pool.
35 {
36 public:
start(OwnerType *,ActiveRunnableBase::Ptr pRunnable)37 	static void start(OwnerType* /*pOwner*/, ActiveRunnableBase::Ptr pRunnable)
38 	{
39 		ThreadPool::defaultPool().start(*pRunnable);
40 		pRunnable->duplicate(); // The runnable will release itself.
41 	}
42 };
43 
44 
45 } // namespace Poco
46 
47 
48 #endif // Foundation_ActiveStarter_INCLUDED
49