是否有标准的线程安全命名法?

时间:2010-08-19 14:51:40

标签: multithreading

是否存在一个标准术语,用于区分在多线程环境中可以安全使用的对象(我的对象没有不受保护的静态成员)和在MT环境中可以安全使用的对象(可能是因为我把锁定在所有公共方法周围)?

让我再添加一些解释:我有一个C ++库,在多线程环境中使用是完全安全的,但不是线程安全的。该库包含一个从std :: exception继承的异常类。 what()方法返回一个char *。由于我坚持使用父级中定义的签名,因此我必须将内部的内存返回到类,这使得此特定方法比库的其余部分更不安全。我正在寻找在记录这种方法时使用的一些标准术语。

2 个答案:

答案 0 :(得分:0)

五年后,我注意到当前关于线程安全的Wikipeida文章列出了三个级别的线程安全性:

线程安全:当多个线程同时访问时,保证实现没有竞争条件。

有条件安全:不同的线程可以同时访问不同的对象,并且可以保护对共享数据的访问免受竞争条件的影响。

非线程安全:不应由不同的线程同时访问代码。

我一直在寻找的答案是" Conditional Safe"类别。

答案 1 :(得分:-1)

可以在多线程环境中使用的静态方法称为“线程安全”。

多个线程可以同时使用的实例对象通常称为“不可变”,因为这是确保线程安全的最常用机制。

如果从广义上定义“线程安全”不仅包括避免数据损坏而且还包含死锁的不可能性,那么可变实例很少可以使线程安全,因为线程安全最终取决于如何使用了对象。

如果你狭义地定义“线程安全”意味着对象总是处于一致状态,那么我不知道这种事情的任何特殊术语。

通常最好将“线程安全”定义为整个系统的属性而不是类。

相关问题