Пример #1
0
BEGIN_ZKIT

void* ThreadBase::threadFunc(void *arg)
{
	ThreadBase *thread = (ThreadBase *)arg;
	if (thread == 0) 
	{
		return 0; // error.
	}

	while (!thread->isTerminated()) 
	{
		if (thread->run() < 0) 
		{
			printf("\nthread=%d exit because of return value!", thread->getThreadId());
			break;
		}
	}

	thread->threadStopped();

	printf("\nthread exit: %d", thread->getThreadId());

	return 0;
}
Пример #2
0
ThreadBase *ThreadBase::getThreadById( ThreadId id ) {
  for( size_t i = 0; i < current_threads.size(); ++i ) {
    ThreadBase *thread = current_threads[i];
    if( pthread_equal( thread->getThreadId(), id ) ) {
      return thread;
    }
  }
  return NULL;
}
Пример #3
0
bool HapticThreadBase::inHapticThread() {
  PeriodicThread::ThreadId id = PeriodicThread::getCurrentThreadId();
  for( vector< HapticThreadBase *>::iterator i = threads.begin();
       i != threads.end(); ++i ) {
    ThreadBase *thread = dynamic_cast< ThreadBase * >( *i );
    if( thread && pthread_equal( thread->getThreadId(), id ) )
      return true;
  }
  return false;
}