Replaced sleep with usleep.
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@1027 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
8286c4e0b2
commit
d2af9cf1df
1 changed files with 17 additions and 13 deletions
|
@ -40,8 +40,11 @@
|
||||||
#if defined( COMPILER_ALLOWS_THREAD_LOCAL_STORAGE )
|
#if defined( COMPILER_ALLOWS_THREAD_LOCAL_STORAGE )
|
||||||
|
|
||||||
|
|
||||||
#include <loki/LevelMutex.h>
|
#include "../include/loki/LevelMutex.h"
|
||||||
|
|
||||||
|
#if !defined( _MSC_VER )
|
||||||
|
#include <unistd.h> // needed for usleep function.
|
||||||
|
#endif
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
|
|
||||||
|
@ -784,7 +787,9 @@ void MutexSleepWaits::Wait( void )
|
||||||
#if defined( _MSC_VER )
|
#if defined( _MSC_VER )
|
||||||
::SleepEx( sleepTime, true );
|
::SleepEx( sleepTime, true );
|
||||||
#else
|
#else
|
||||||
::sleep( sleepTime );
|
if ( 0 == sleepTime )
|
||||||
|
sleepTime = 1;
|
||||||
|
::usleep( sleepTime * 1000 );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -911,29 +916,28 @@ MutexErrors::Type SpinLevelMutex::Unlock( void ) volatile
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if defined( _MSC_VER )
|
|
||||||
|
|
||||||
SleepLevelMutex::SleepLevelMutex( unsigned int level ) :
|
SleepLevelMutex::SleepLevelMutex( unsigned int level ) :
|
||||||
SpinLevelMutex( level ),
|
SpinLevelMutex( level ),
|
||||||
m_sleepTime( 1 ),
|
m_sleepTime( 1 )
|
||||||
m_wakable( true )
|
#if defined( _MSC_VER )
|
||||||
|
, m_wakable( true )
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
SleepLevelMutex::SleepLevelMutex( unsigned int level, unsigned int sleepTime ) :
|
SleepLevelMutex::SleepLevelMutex( unsigned int level, unsigned int sleepTime ) :
|
||||||
SpinLevelMutex( level ),
|
SpinLevelMutex( level ),
|
||||||
m_sleepTime( sleepTime / 1000 )
|
m_sleepTime( sleepTime )
|
||||||
|
#if defined( _MSC_VER )
|
||||||
|
, m_wakable( true )
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if ( 0 == m_sleepTime )
|
if ( 0 == m_sleepTime )
|
||||||
m_sleepTime = 1; // Can't have a resolution less than 1 second.
|
m_sleepTime = 1; // Can't have a resolution less than 1 millisecond.
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
SleepLevelMutex::~SleepLevelMutex( void )
|
SleepLevelMutex::~SleepLevelMutex( void )
|
||||||
|
@ -953,7 +957,7 @@ MutexErrors::Type SleepLevelMutex::Lock( void ) volatile
|
||||||
#if defined( _MSC_VER )
|
#if defined( _MSC_VER )
|
||||||
::SleepEx( m_sleepTime, m_wakable );
|
::SleepEx( m_sleepTime, m_wakable );
|
||||||
#else
|
#else
|
||||||
::sleep( m_sleepTime );
|
::usleep( m_sleepTime * 1000 );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return MutexErrors::Success;
|
return MutexErrors::Success;
|
||||||
|
|
Loading…
Reference in a new issue