wxMutexInternal::~wxMutexInternal() { if ( m_critRegion != kInvalidID ) MPDeleteCriticalRegion( m_critRegion ); MPYield(); }
wxSemaphoreInternal::~wxSemaphoreInternal() { if (m_semaphore != kInvalidID) MPDeleteSemaphore( m_semaphore ); MPYield(); }
wxSemaError wxSemaphoreInternal::Post() { OSStatus err = MPSignalSemaphore( m_semaphore ); MPYield(); if (err != noErr) return wxSEMA_MISC_ERROR; return wxSEMA_NO_ERROR; }
wxMutexError wxMutexInternal::Unlock() { wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") ) ; OSStatus err = MPSignalSemaphore( m_semaphore); MPYield() ; if ( err) { wxLogSysError(_("Could not unlock mutex")); return wxMUTEX_MISC_ERROR; } return wxMUTEX_NO_ERROR; }
wxMutexError wxMutexInternal::Unlock() { wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") ) ; OSStatus err = MPExitCriticalRegion( m_critRegion); MPYield() ; if ( err) { wxLogSysError(_("Could not unlock mutex")); return wxMUTEX_MISC_ERROR; } return wxMUTEX_NO_ERROR; }
void cFUThread::YieldCurrentThread() { #if defined(WIN32) //f**k // assert(0); // SwitchToThread(); #elif defined (FP_APPLE) //Below is a CoreFoundation call that I'm not sure about. //CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true); MPYield(); #elif defined(LINUX)|| defined(ANDROID)|| defined(IOS) //pthread_yield();//linux sched_yield();//android #endif }
void SDL_Delay(Uint32 ms) { Uint32 stop, now; stop = SDL_GetTicks() + ms; do { #if TARGET_API_MAC_CARBON MPYield(); #else SystemTask(); #endif now = SDL_GetTicks(); } while ( stop > now ); }
void thread::yield() { #if defined(BOOST_HAS_WINTHREADS) Sleep(0); #elif defined(BOOST_HAS_PTHREADS) # if defined(BOOST_HAS_SCHED_YIELD) int res = 0; res = sched_yield(); assert(res == 0); # elif defined(BOOST_HAS_PTHREAD_YIELD) int res = 0; res = pthread_yield(); assert(res == 0); # else xtime xt; xtime_get(&xt, TIME_UTC); sleep(xt); # endif #elif defined(BOOST_HAS_MPTASKS) MPYield(); #endif }
void wxThread::Yield() { CFRunLoopRunInMode( kCFRunLoopDefaultMode , 0 , true ) ; MPYield(); }