gastos generales de almacenamiento local de subprocesos
Suponga que hay alguna función no reentrante que utiliza variables globales:
int i;
void foo(void){
/* modify i */
}
Y luego, quiero usar esta función en código multiproceso, para poder cambiar el código de esta manera:
void foo(int i){
/* modify i */
}
o, usando el especificador de gcc __thread, más simple:
__thread int i;
void foo(void){
/* modify i */
}
as ventajas de la última es que no necesito cambiar otro código que llame a foo ().
Mi pregunta es, ¿cuánto cuesta el almacenamiento local de subprocesos? ¿Hay algunos problemas no obvios con TLS?
¿Hay alguna sobrecarga si voy a modificar la variable TLS` a través de un puntero separado, como este:
__thread int i;
void foo(void){
int *p = &i;
/* modify i using p pointer */
}
Gracias