什么时候要用到 mutex, 用QT多线程举例
时间: 2023-10-21 07:04:00 浏览: 190
QT的多线程编程示例
Mutex(互斥锁)是一种用于多线程编程的同步机制,用来保护共享资源,以防止并发访问而导致的数据竞争和不一致性。
在QT多线程中,当多个线程需要同时访问和修改同一个共享资源时,就需要使用mutex来保护该资源。
例如,假设有一个计数器,多个线程需要对其进行累加操作,那么在每个线程访问该计数器之前,需要先获取该计数器的mutex锁,以确保同一时间只有一个线程能够访问和修改该计数器,避免数据竞争。
示例代码如下:
```c++
#include <QThread>
#include <QMutex>
class Counter : public QThread {
public:
Counter() : m_count(0) {}
void run() override {
for (int i = 0; i < 1000000; ++i) {
m_mutex.lock();
++m_count;
m_mutex.unlock();
}
}
int count() const { return m_count; }
private:
int m_count;
QMutex m_mutex;
};
```
在该示例代码中,Counter类表示一个计数器,run()函数是线程的执行函数,通过使用QMutex类的lock()和unlock()函数对计数器进行保护,以确保线程安全。
阅读全文