Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R2.1 “不可失去对已分配资源的控制”线程 detach 理论上也算失去了控制? #50

Open
Mq-b opened this issue Feb 5, 2024 · 1 comment

Comments

@Mq-b
Copy link
Contributor

Mq-b commented Feb 5, 2024

失去对已分配资源的控制

其实单看这个,线程 detach() 也算是失去控制了。

std::thread::detach,线程对象释放了自己的资源(线程)的所有权,允许线程执行独立地持续。

不过可以保证一旦该线程退出,则释放任何分配的资源

并不会有原文中说的:

对于动态分配的资源,其地址、句柄或描述符等标志性信息不可被遗失,否则资源无法被访问也无法被回收,这种问题称为“资源泄漏”,会导致资源耗尽或死锁等问题,使程序无法正常运行。

之类的问题。

或许是标题中的 “不可失去对已分配资源的控制”,中没有明确是“”失去了对资源的控制?

线程 detach() 之后,我们的确失去了对此线程的控制,之后的合法性由 OS 保证,这或许不是什么问题。

当然,我不是推崇 detach(),它本身也有不少问题,


总而言之,或许我觉得此规则可以增加一些描述,明确是“谁”失去了资源的控制,或者即使失去,如果有保证正确,也无所谓。

@brotherbeer
Copy link
Collaborator

好的~ 后续改进

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants