gpt4 book ai didi

c - 多线程应用程序中的 __attribute__((constructor)) && __attribute__((destructor))

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:29 26 4
gpt4 key购买 nike

我有一个目前正在用 C 编写的应用程序,其中我在作为项目一部分的库中声明了几个 TLS 静态全局变量。

TLS 变量是使用 gcc 的 __thread 指令声明的。

我想知道我是否可以使用 .ctor && .dtor 部分在共享或静态 C 库中基于每个线程初始化 TLS 数据,以及使用此方法的线程安全性如何。

.ctor && .dtor 部分是按线程执行还是只存在于父进程中?

最后一点,该库静态或动态编译为应用程序代码,这是否意味着共享/静态库中的 .ctor && .dotr 部分将成为最终可执行文件的一部分?

我对线程部分真的很困惑,主要是...有人有想法吗?

最佳答案

试试看会发生什么,但最好不要依赖手册中未定义的行为 - 它可能会更改,恕不另行通知。

据我所知,__attribute__((constructor)) 仅适用于在加载时间 运行的全局数据。尝试将其与 TLS 混合可能未定义,或者可能仅为主线程初始化数据。

关于c - 多线程应用程序中的 __attribute__((constructor)) && __attribute__((destructor)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14314932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com