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

BillLeecn 2010-08-30 04:53:57
比如 QUdpSocket 中所有函数都是 reentrant, 那么是不是我可以几个线程同时调用 writeDatagram, 或者在 readDatagram 时同时调用 writeDatagram ?
要是我几个线程同时调用 bind 呢?
...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tzcherish 2010-09-03
  • 打赏
  • 举报
回复
bigpool 2010-09-03
  • 打赏
  • 举报
回复
在Qt文档中,术语“可重入”与“线程安全”被用来说明一个函数如何用于多线程程序。假如一个类的任何函数在此类的多个不同的实例上,可以被多个线程同时调用,那么这个类被称为是“可重入”的。假如不同的线程作用在同一个实例上仍可以正常工作,那么称之为“线程安全”的。
大多数c++类天生就是可重入的,因为它们典型地仅仅引用成员数据。任何线程可以在类的一个实例上调用这样的成员函数,只要没有别的线程在同一个实例上调用这个成员函数。
gaowenboms 2010-09-01
  • 打赏
  • 举报
回复
当函数可以同时被不同的线程安全地调用时,就称其为"线程安全的"/
而如果类的不同实例可同时用于不同的线程,那么这个类就是可重入的.
BillLeecn 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dext 的回复:]

reentrant 被翻译成 可重入,Qt 中大部分类是是 reentrant

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

如果要共享调用,就需要锁机制。
[/Quote]
谢谢
学习了
巴依老爷 2010-08-31
  • 打赏
  • 举报
回复
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.
dext 2010-08-30
  • 打赏
  • 举报
回复
reentrant 被翻译成 可重入,Qt 中大部分类是是 reentrant

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

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

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧