Information
We are currently investigating an issue with the editor of some pages. Please save your work and avoid to create new pages until this banner is gone.
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#ifndef _ACS_THREAD_TEST_H #define _ACS_THREAD_TEST_H #include "acsThread.h" class TestACSThread : public ACS::Thread { public: TestACSThread(const ACE_CString& name, const ACS::TimeInterval& responseTime=ThreadBase::defaultResponseTime, const ACS::TimeInterval& sleepTime=ThreadBase::defaultSleepTime, bool del=false ) : ACS::Thread(name, responseTime, sleepTime, del) { ACS_TRACE("TestACSThread::TestACSThread"); loopCounter_m = 0; } TestACSThread(const ACE_CString& name, const ACS::TimeInterval& responseTime, const ACS::TimeInterval& sleepTime, bool del, const long _thrFlags ) : ACS::Thread(name, responseTime, sleepTime, del, _thrFlags) { ACS_TRACE("TestACSThread::TestACSThread"); loopCounter_m = 0; } ~TestACSThread() { ACS_TRACE("TestACSThread::~TestACSThread"); terminate(); } virtual void runLoop() { if (loopCounter_m==100) { exit(); } ACS_LOG(LM_SOURCE_INFO, "TestACSThread::runLoop", (LM_INFO, "%s: runLoop (%d)", getName().c_str(), loopCounter_m)); ++loopCounter_m; } protected: int loopCounter_m; }; #endif /* end _ACS_THREAD_TEST_H */ |
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#include "acsThreadManager.h" #include "acsThreadTest.h" int main(int argc, char *argv[]) { LoggingProxy logger_m(0, 0, 31); LoggingProxy::init(&logger_m); ACS_CHECK_LOGGER; //Obtain Thread Manager ACS::ThreadManager tm(getNamedLogger("ThrMgrLogger")); //Create thread TestACSThread* test = tm.create<TestACSThread>("TestThread"); //Resume execution test.resume(); //Wait reasonable time... sleep(10); //Release Thread Resources tm.destroy(test); return 0; } |
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#ifndef _<idl>_IDL_ #define _<idl>_IDL_ #include <acscomponent.idl> module <module> { interface <interface> : ACS::ACSComponent { void resume(); void pause(); }; }; #endif |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#ifndef _<classFile>_H #define _<classFile>_H #include <acscomponentImpl.h> #include <<idl>S.h> #include "acsThreadTest.h" class <class> : public virtual acscomponent::ACSComponentImpl, public virtual POA_<module>::<interface> { public: <class>(const ACE_CString& name, maci::ContainerServices* containerServices); virtual ~<class>(); void execute(); void resume(); void pause(); void cleanUp protected: TestACSThread* test = NULL; }; #endif |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
//Component code... #include <<classFile>.h> <class>::<class>(const ACE_CString& name, maci::ContainerServices* containerServices) : ACSComponentImpl(name, containerServices) { ACS_TRACE("<class>::<class>"); } <class>::~<class>() { ACS_TRACE("<class>::~<class>"); } void <class>::execute() { test = getContainerServices()->getThreadManager()->create<TestACSThread>("ThreadTest"); } void <class>::resume() { test.resume(); } void <class>::pause() { test.suspend(); } void <class>::cleanUp() { getContainerServices()->getThreadManager()->destroy(test); } |
...