原文:
a class is said to be reentrant if its member functions can be called safely from multiple threads, as long as each thread uses a different instance of the class.
翻译:
不同线程使用不同实例名访问同一个类的同一个函数,这种行为如果是安全的,那这个类是可重入的。
咋一看,这句话似乎说了等于没说,既然实例名都不同了,也就是不同线程访问的对象都不一样,哪里还有不安全的地方?
细想,如果这个类有静态数据成员,那同类的不同对象都只有这个数据的一个拷贝,在这种情况下“对象不同”并不能保证静态数据的安全
按这样的理解,假如一个类操作了全局变量,那它也是不可重入的
我这样理解不知道对不对?还有没有其他情况呢?
另外都说次I线程里不能操作主线程的GUI类,是因为Widget和它的子类都是不可重入的
Widget到底在哪里不可重入?