回复: QT多线程互斥变量是否有支持自旋锁的功能?
#11 [wwwfffhhh 08-14 23:40]
基本自己解决了这个自旋锁的问题,就是自己定义一个类,封装了了原来的QRecursiveMutex。
参考代码如下:
class QRecursiveMutexWithSpin
{
public:
explicit QRecursiveMutexWithSpin(quint32 SpinCount_i)
:SpinCount(SpinCount_i)
{
}
inline void lock()
{
for(quint32 i = 0; i < SpinCount; i++)
{
if(InnerRecursiveMutext.tryLock())
return;
}
InnerRecursiveMutext.lock();
}
inline void unlock()
{
InnerRecursiveMutext.unlock();
}
private:
QRecursiveMutex InnerRecursiveMutext;
quint32 SpinCount = 0;//自旋次数
};