QMutex简介
QMutex类提供了一种保护一个变量或者一段代码的方法,这样可以每次只让一个线程访问它。这个类提供了一个lock()函数用于锁住互斥量,如果互斥量是解锁状态,那么当前线程立即占用并锁定它;否则,当前线程会阻塞,直到这个互斥量的线程对它解锁为止。QMutex类还提供了一个tryLock()函数,如果该互斥量已经锁定,它就会立即返回。
[cpp] view plain copy
- #include <QCoreApplication>
- #include <stdio.h>
- #include <QThread>
- #include <QMutex>
- //
- class MutexThread:public QThread
- {
- public:
- MutexThread();
- void stop();
- private:
- bool flgRunning;
- QMutex mutex;
- void run();
- };
- MutexThread::MutexThread()
- {
- flgRunning = true;
- }
- void MutexThread::stop()
- {
- mutex.tryLock();
- flgRunning = false;
- mutex.unlock();
- }
- void MutexThread::run()
- {
- mutex.tryLock();
- while(flgRunning == true)
- {
- printf("Hello,World!\n");
- sleep(1);
- }
- mutex.unlock();
- printf("Thread Exit!\n");
- }
- //
- int main(int argc,char **argv)
- {
- QCoreApplication capp(argc,argv);
- MutexThread mThread;
- mThread.start();
- while(1)
- {
- if(getchar() == ‘B‘)
- {
- mThread.stop();
- mThread.wait();
- break;
- }
- }
- return capp.exec();
- }
时间: 2024-10-01 09:53:52