~CHTTPDownloadDialog() { StopThread(); }
CPokerTrackerThread::~CPokerTrackerThread() { StopThread(); }
//------------------------------------------------------------------* void CControlMgt::FinalRelease() { ConnectControlMessages(FALSE); StopThread(); }
void AudioOutputDeviceAlsa::Stop() { StopThread(); }
CLinuxInputDevicesCheckHotplugged::~CLinuxInputDevicesCheckHotplugged() { m_bStop = true; m_quitEvent.Set(); StopThread(true); }
CPictureInfoLoader::~CPictureInfoLoader() { StopThread(); delete m_mapFileItems; }
bool CDummyVideoPlayer::CloseFile() { StopThread(); return true; }
void CClientThread::CloseThread(HANDLE hFile) { StopThread(); }
void CVideoReferenceClock::Stop() { CSingleExit lock(g_graphicsContext); StopThread(); }
//.............................................................................................................................. MThread::~MThread() { StopThread(); }
//.............................................................................................................................. int MThread::StartThread(MString strName, tagMThreadFunction fpFunction,void * lpParam,bool bCheckAlive) { s_bStopAllThread = false; StopThread(); m_bStopCurThread = false; //add by liuqy 20100817 for 启动线程时,需要复位系统参数 rv_Reset(); #ifndef LINUXCODE register int errorcode; m_hRecordData = (HANDLE)_beginthreadex( 0, 0, (unsigned int (__stdcall *)(void *))fpFunction, lpParam, 0, (unsigned int *)&errorcode ); if ( m_hRecordData == NULL ) { return(MErrorCode::GetSysErr()); } //modify by liuqy 20100817 for 保存线程ID号 //SetSpObejctName((strName+"_pid:"+MString(errorcode)).c_str()); m_ulThreadID = errorcode; SetSpObejctName(strName.c_str()); //end mdofiy by liuqy if ( bCheckAlive == true ) { inner_setactive(); } return(1); #else /* * LINUX pthread_create创建的线程的堆栈是10MB * 我们的程序通常用不到那么大,所以调整为2MB * 这样可以减少逻辑地址 */ pthread_attr_t thread_attr; size_t stack_size; if(pthread_attr_init(&thread_attr) != 0) { return(MErrorCode::GetSysErr()); } //设置线程栈空间为2M. stack_size = 2048*1024; if(pthread_attr_setstacksize(&thread_attr, stack_size) != 0) { return(MErrorCode::GetSysErr()); } if ( pthread_create(&m_hRecordData,&thread_attr,fpFunction,lpParam) != 0 ) { return(MErrorCode::GetSysErr()); } //add by liuqy 20100817 for 保存线程ID号 m_ulThreadID = m_hRecordData; SetSpObejctName(strName.c_str()); if ( bCheckAlive == true ) { inner_setactive(); } return(1); #endif }
void CDVDMessageTracker::DeInit() { StopThread(); }
ThreadedMemoryCardWorker::~ThreadedMemoryCardWorker() { StopThread(); delete m_pDriver; }
VideoEncoder::~VideoEncoder() { StopThread(); }
void CRemoteControl::Disconnect() { StopThread(); Close(); }
CAddonStatusHandler::~CAddonStatusHandler() { StopThread(); }
GroupManager::~GroupManager() { ccn_free(); pGroupManager = NULL; StopThread(); }
TInt CTestSemtrywait::TestSem392( ) { int errsum=0, err = 0; int retval = 0; ThreadData lThreadData; sem_t lSignalSemaphore; sem_t lSuspendSemaphore; sem_t lTestSemaphore; pthread_mutex_t lTestMutex; pthread_cond_t lTestCondVar; pthread_condattr_t lCondAttr; pthread_mutexattr_t lTestMutexAttr; pthread_mutexattr_t defaultattr; pthread_mutexattr_t errorcheckattr; pthread_mutexattr_t recursiveattr; pthread_mutexattr_init(&defaultattr); pthread_mutexattr_init(&errorcheckattr); pthread_mutexattr_init(&recursiveattr); pthread_mutexattr_settype(&errorcheckattr,PTHREAD_MUTEX_ERRORCHECK); pthread_mutexattr_settype(&recursiveattr,PTHREAD_MUTEX_RECURSIVE); pthread_mutex_t l_staticmutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t l_errorcheckmutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; pthread_mutex_t l_recursivemutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; pthread_cond_t l_staticcondvar = PTHREAD_COND_INITIALIZER; CommonData lCommonData; lCommonData.iStaticMutex = &l_staticmutex; lCommonData.iErrorCheckMutex = &l_errorcheckmutex; lCommonData.iRecursiveMutex = &l_recursivemutex; lCommonData.iStaticCondVar = &l_staticcondvar; retval = sem_init(&lSignalSemaphore,0,0); if(retval != 0) { return retval; } retval = sem_init(&lSuspendSemaphore,0,0); if(retval != 0) { return retval; } lThreadData.iSignalSemaphore = &lSignalSemaphore; lThreadData.iSuspendSemaphore = &lSuspendSemaphore; lThreadData.iTestSemaphore = &lTestSemaphore; lThreadData.iTestMutex = &lTestMutex; lThreadData.iTestMutexAttr = &lTestMutexAttr; lThreadData.iTestCondVar = &lTestCondVar; lThreadData.iDefaultAttr = &defaultattr; lThreadData.iErrorcheckAttr = &errorcheckattr; lThreadData.iRecursiveAttr = &recursiveattr; lThreadData.iCondAttr = &lCondAttr; for (int loop = 0; loop < EThreadMain; loop++) { g_spinFlag[loop] = true; } lThreadData.iSuspending = false; lThreadData.iSpinCounter = 0; lThreadData.iCurrentCommand = -1; lThreadData.iSelf = EThreadMain; lThreadData.iValue = 0; lThreadData.iRetValue = 0; lThreadData.ierrno = 0; lThreadData.iExpectederrno = 0; lThreadData.iTimes = 0; lThreadData.iStopped = false; lThreadData.iCommonData = &lCommonData; retval = SemInit(&lThreadData); fp=func2; retval = ThreadCreate(&lThreadData, (void*) EThread1); fp=func4; retval = ThreadCreate(&lThreadData, (void*) EThread2); retval = SemPost(&lThreadData); retval = ThreadDestroy(&lThreadData, (void*) EThread1); retval = ThreadDestroy(&lThreadData, (void*) EThread2); retval = SemDestroy(&lThreadData); StopThread(&lThreadData); err = pthread_cond_destroy(&l_staticcondvar); if(err != EINVAL) { errsum += err; } err = pthread_mutex_destroy(&l_recursivemutex); if(err != EINVAL) { errsum += err; } err = pthread_mutex_destroy(&l_errorcheckmutex); if(err != EINVAL) { errsum += err; } err = pthread_mutex_destroy(&l_staticmutex); if(err != EINVAL) { errsum += err; } err = pthread_mutexattr_destroy(&recursiveattr); if(err != EINVAL) { errsum += err; } err = pthread_mutexattr_destroy(&errorcheckattr); if(err != EINVAL) { errsum += err; } err = pthread_mutexattr_destroy(&defaultattr); if(err != EINVAL) { errsum += err; } err = sem_destroy(&lSignalSemaphore); if(err != EINVAL) { errsum += err; } err = sem_destroy(&lSuspendSemaphore); if(err != EINVAL) { errsum += err; } return retval+errsum; }
virtual ~ThreadObject_Abstract() { StopThread(); }
void CApplicationRenderer::Stop() { StopThread(); }
CAsyncFileCopy::~CAsyncFileCopy() { StopThread(); }
CThread::~CThread(void) { StopThread(); }
CWinEventsAndroid::~CWinEventsAndroid() { m_bStop = true; StopThread(true); }
void CViWavePlay::Stop() { Close(); StopThread(); }
Thread::~Thread() { StopThread(); pthread_attr_destroy(&__thread_attr); }
void Wiimote::Shutdown() { StopThread(); ClearReadQueue(); m_write_reports.Clear(); }
AudioEncoder::~AudioEncoder() { StopThread(); }
LinuxaioQueue::~LinuxaioQueue() { StopThread(post_thread_, post_thread_state_, num_waiting_requests_); StopThread(wait_thread_, wait_thread_state_, num_posted_requests_); syscall(SYS_io_destroy, context_); }
CThread::~CThread() { StopThread(); }
void CLibraryTipCtrl::OnDestroy() { StopThread(); CCoolTipCtrl::OnDestroy(); }