当前位置:编程学习 > wap >>

Qt 文档说的 reentrant 是什么意思?

比如 QUdpSocket 中所有函数都是 reentrant, 那么是不是我可以几个线程同时调用 writeDatagram, 或者在 readDatagram 时同时调用 writeDatagram ?
要是我几个线程同时调用 bind 呢? --------------------编程问答-------------------- reentrant 被翻译成 可重入,Qt 中大部分类是是 reentrant

也就是说,你创建若干个这样的实例,各线程中各自调用,是没有问题的。

如果要共享调用,就需要锁机制。 --------------------编程问答-------------------- A thread-safe function can be called simultaneously from multiple threads, even when the invocations use shared data, because all references to the shared data are serialized.
A reentrant function can also be called simultaneously from multiple threads, but only if each invocation uses its own data. --------------------编程问答--------------------
引用 1 楼 dext 的回复:
reentrant 被翻译成 可重入,Qt 中大部分类是是 reentrant

也就是说,你创建若干个这样的实例,各线程中各自调用,是没有问题的。

如果要共享调用,就需要锁机制。

谢谢
学习了 --------------------编程问答-------------------- 当函数可以同时被不同的线程安全地调用时,就称其为"线程安全的"/
而如果类的不同实例可同时用于不同的线程,那么这个类就是可重入的. --------------------编程问答-------------------- 在Qt文档中,术语“可重入”与“线程安全”被用来说明一个函数如何用于多线程程序。假如一个类的任何函数在此类的多个不同的实例上,可以被多个线程同时调用,那么这个类被称为是“可重入”的。假如不同的线程作用在同一个实例上仍可以正常工作,那么称之为“线程安全”的。
大多数c++类天生就是可重入的,因为它们典型地仅仅引用成员数据。任何线程可以在类的一个实例上调用这样的成员函数,只要没有别的线程在同一个实例上调用这个成员函数。 --------------------编程问答--------------------
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,