QT学习笔记(1): Qt的线程安全和可重用性

原来觉得对线程安全是比较了解的,可是今天看了Nokia Developer中的Reentrancy and Thread-safty之后,发现还有有些概念没有很清楚。所以在此留点痕迹好了.

首先两个英文单词: Reentrancy 和 Thread-safty, 我将他们翻译成可重调和线程安全的。

然后又分为函数可重调、函数线程安全和类可重调、类线程安全。

不过基本可以这么认为:

1. 线程安全函数是可重用函数, 可是可重用函数不一定是线程安全的。线程安全函数可以调用共享的数据,而不会出错,但是可重调的只能使用自己私有的数据。

2. reentrant: 只要每一个线程使用不同的这个类的对象,该类的成员函数就可以安全地被多线程调用。

thread-safe:即使不同的线程使用同一个类的对象,该类的成员函数就可以安全地被多线程调用。 

如下是它的例子:

reentrant:

class Counter
 {
 public:
     Counter() { n = 0; }

     void increment() { ++n; }
     void decrement() { --n; }
     int value() const { return n; }

 private:
     int n;
 };
Thread-safty:

class Counter
 {
 public:
     Counter() { n = 0; }

     void increment() { QMutexLocker locker(&mutex); ++n; }
     void decrement() { QMutexLocker locker(&mutex); --n; }
     int value() const { QMutexLocker locker(&mutex); return n; }

 private:
     mutable QMutex mutex;
     int n;
 };

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值