之前听朋友讲在面试的时候问及C++的可重入(reentrant)问题,当时就不知道是什么概念,和C++的几大特性根本联系不上来,最近在逛 QT 论坛的时候有一个讨论Qobject、线程和事件的主题,其中讨论了关于可重入和线程的关系,才有了点体会。 当一个类是可重入的时候,在一时刻最多只有一个线程可以访问实例对象,即等同于说多个线程可以安全的访问各自的实例。
当一个函数是可重入的时候,除了全局的变量外,一个线程在一时刻能 invoke 这个函数,并使用当前的数据,其他的线程可以独立的来调用这个函数并使用自身的数据。
通过上面的理解,就是说,必须通过一个外部的加锁机制,类和函数才能访问对象实例和共享数据。
【为了学习的方面,把看到的链接贴于此,方便我以及路过的朋友学习】
阅读(1923) | 评论(0) | 转发(0) |