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.
Table of Contents |
---|
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
//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); } /* --------------- [ MACI DLL support functions ] -----------------*/ #include <maciACSComponentDefines.h> MACI_DLL_SUPPORT_FUNCTIONS(<class>) /* ----------------------------------------------------------------*/ |