sobrecarga de armazenamento local de threads
Suponha que exista alguma função não reentrante que use variáveis globais:
int i;
void foo(void){
/* modify i */
}
E então, quero usar esta função no código multithread, para poder alterar o código da seguinte maneira:
void foo(int i){
/* modify i */
}
or, usando o especificador gcc __thread, mais simples:
__thread int i;
void foo(void){
/* modify i */
}
s vantagens do último é que não preciso alterar outro código que chame foo (
Minhas perguntas são: quanto custa o armazenamento local de threads? Existem problemas não óbvios com o TLS?
Existe alguma sobrecarga se eu modificar a variável TLS`ed através de ponteiro separado, como este:
__thread int i;
void foo(void){
int *p = &i;
/* modify i using p pointer */
}
Obrigado