首页| 论坛| 消息

标题:QT多线程互斥变量是否有支持自旋锁的功能?
作者:wwwfffhhh
日期:2021-05-07 22:46
内容:

qt的QMutex变量没有看到设置自旋锁的函数,也就是类似window系统的 InitializeCriticalSectionAndSpinCount(...)的设置自旋锁的参数,不知道QT是否有类似这种互斥量?


#1 [wwwfffhhh 05-07 22:48]
程序需要在Linux系统下运行,并且我现在QT编写的程序需要多线程高性能处理,所以需要设置这个参数,不知道有什么方法解决?
#2 回 wwwfffhhh 的帖子 [snow_man_0 05-07 22:56]
wwwfffhhh:程序需要在Linux系统下运行,并且我现在QT编写的程序需要多线程高性能处理,所以需要设置这个参数,不知道有什么方法解决? (2021-05-07 22:48) 
Qt多线程计算和OPENMP的性能差不多的
#3 [wwwfffhhh 05-08 09:18]
你的意思是QMutext内部已经设置了自旋锁吗?否则CPU总是需要线程核心态和用户态切换的,所以就比较慢?
#4 [deepgui 05-08 11:33]
你觉得不够可以使用C++里的mutex
#5 [realfan 05-10 17:15]
自旋锁,可以用C++自己写一个,网上也很多。

#include
class SpinLock {
public:
SpinLock() : _flag(false) {}
void lock() {
bool expect = false;
while (!_flag.compare_exchange_weak(expect, true)) {
expect = false;
}
}

void unlock() {
_flag.store(false);
}

private:
std::atomic _flag;
};

<< 1 2 3 >> (1/3)

回复 发表
主题 版块