Pregunta

C ++ 0x agrega un nuevo almacenamiento especificador thread_local que aún no está implementado en VS10.

Sin embargo, la programación paralela Biblioteca define un Concurrency::combinable clase que tiene una función local() que Devuelve una referencia a la rosca-privada sub-cálculo .

¿Hay semántica para thread_local que no puede ser (fácilmente) cubiertas por tener una variable de tipo static combinable<T>?

Si no es lo que fue thread_local añadido a la lengua de la base si se puede implementar en una biblioteca?

¿Fue útil?

Solución

¿Por qué C ++ añadido class los objetos si podría ser implementado por una biblioteca como algo que GObject hace en C? Debido a que C ++ quiere class objetos a ser conocido en tiempo de compilación , esto es más eficiente. Por lo tanto C ++ inicialización de la clase / desinicialización es excepción-safe ( RAII ).

Algunas de las características son más importantes y más necesarios aplicación a realizar. thread_local es un especificador de clase de almacenamiento , por lo que puede ser conocido a tiempo de compilación y el compilador puede hacer mucho más de optimización.

También en http: // www .open-std.org / JTC1 / SC22 / WG21 / docs / documentos / 2008 / n2659.htm han dicho:

  

Tema variable dinámica de inicialización

     

En la actualidad, todas las implementaciones de almacenamiento local de subprocesos hacen no apoyar initalization dinámico (y destructores presumiblemente no triviales). Hubo consenso leve en el Mont Treblant cumplir para apoyar inicialización dinámica de las variables de función local de subproceso local. La inicialización de tales variables ya esté vigilado y sincrónica, por lo que no se requiere nueva tecnología. Por otro lado, la aplicación de inicialización dinámica de las variables de espacio de nombres de alcance es mucho más difícil y puede requerir enlazador adicional y soporte del sistema operativo .

¿Por qué thread_local se han introducido como una nueva palabra clave lenguaje? Parece que la razón podría ser Tema variable dinámica de inicialización .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top