update boost on linux
This commit is contained in:
@@ -72,6 +72,49 @@ void try_based_lock(MutexType &m)
|
||||
}
|
||||
}
|
||||
|
||||
template<class MutexType>
|
||||
void timed_based_lock(MutexType &m, unsigned const uCheckPeriodSec)
|
||||
{
|
||||
const boost::posix_time::time_duration dur(0, 0, uCheckPeriodSec);
|
||||
boost::posix_time::ptime deadline(microsec_clock::universal_time()+dur);
|
||||
if(!m.timed_lock(deadline)){
|
||||
spin_wait swait;
|
||||
do{
|
||||
deadline = microsec_clock::universal_time()+dur;
|
||||
if(m.timed_lock(deadline)){
|
||||
break;
|
||||
}
|
||||
else{
|
||||
swait.yield();
|
||||
}
|
||||
}
|
||||
while(1);
|
||||
}
|
||||
}
|
||||
|
||||
template<class MutexType>
|
||||
void timed_based_timed_lock(MutexType &m, const boost::posix_time::ptime &abs_time, unsigned const uCheckPeriodSec)
|
||||
{
|
||||
const boost::posix_time::time_duration dur(0, 0, uCheckPeriodSec);
|
||||
boost::posix_time::ptime deadline(microsec_clock::universal_time()+dur);
|
||||
if(abs_time <= deadline){
|
||||
m.timed_lock(abs_time);
|
||||
}
|
||||
else if(!m.timed_lock(deadline)){
|
||||
spin_wait swait;
|
||||
do{
|
||||
deadline = microsec_clock::universal_time()+dur;
|
||||
if(m.timed_lock(deadline)){
|
||||
break;
|
||||
}
|
||||
else{
|
||||
swait.yield();
|
||||
}
|
||||
}
|
||||
while(1);
|
||||
}
|
||||
}
|
||||
|
||||
} //namespace ipcdetail
|
||||
} //namespace interprocess
|
||||
} //namespace boost
|
||||
|
||||
Reference in New Issue
Block a user