Example #1
0
wxMutexInternal::~wxMutexInternal()
{
    if ( m_critRegion != kInvalidID )
        MPDeleteCriticalRegion( m_critRegion );

    MPYield();
}
Example #2
0
wxSemaphoreInternal::~wxSemaphoreInternal()
{
    if (m_semaphore != kInvalidID)
        MPDeleteSemaphore( m_semaphore );

    MPYield();
}
Example #3
0
wxSemaError wxSemaphoreInternal::Post()
{
    OSStatus err = MPSignalSemaphore( m_semaphore );
    MPYield();
    if (err != noErr)
        return wxSEMA_MISC_ERROR;

    return wxSEMA_NO_ERROR;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #6
0
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
}
Example #7
0
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 );
}
Example #8
0
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
}
Example #9
0
void wxThread::Yield()
{
    CFRunLoopRunInMode( kCFRunLoopDefaultMode , 0 , true ) ;

    MPYield();
}