在gcc中你可以声明一个线程局部变量,例如,如下所示。
__thread long thread_local_variable;
另外,在gcc中你可以指定一个变量来使用某个寄存器,例如,如下所示。
long register_variable asm ("r15" );
我想把这两个概念结合起来,就是想声明一个使用某个寄存器的线程局部变量。我怎样才能做到这一点?
最佳答案
您不需要做任何特别的事情。你的例子:
long register_variable asm ("r15" );
已经声明了一个线程局部变量,仅仅是因为每个线程都有自己的一组寄存器值。
没有办法让 GCC 的全局寄存器存储变量在线程之间共享。这一点没有得到很好的记录,这一事实说明了寄存器存储全局变量的整个想法是多么的欠考虑和骇人听闻......
关于c - 注册为线程局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9995130/