繁体   English   中英

C ++在C中导出thread_local全局变量?

[英]C++ export thread_local global variable in C?

我正在使用C ++开发共享库,并希望用户包含C标头。

该库导出一个thread_local全局变量,因此应在标头中写入一个extern指令。

并且此变量只能在库代码(C ++)中修改,而在用户代码(C语言)中只读。

但是C语言没有thread_local关键字。 那么,有什么想法吗?

简单的extern type variable绝对正确吗?

以及在C中修改变量的情况? 一切仍然有效吗?

我想象变量是相对于存储在线程上下文中的指针引用的。 甚至可能是一个寄存器。 创建线程时,将分配数据并初始化指针以指向该线程。 (上下文始终需要空格。)当进程从一个线程切换到另一个线程时,当前上下文将存储在另一个上下文中,包括间接指针。 如果未使用正确的类型,则链接时的修补将不正确,并且不会使用正确的内存区域。 我不知道修补程序是否会出错,或者链接器是否知道符号类型,从而使ether出现显式错误,或者只是将全局视为未定义。 即我不知道它是否将其视为不同的符号,相同的符号但声明有冲突的类型或相同的符号,但是混合引用方法会破坏代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM