tengo algo como lo siguiente en C#:.NET resultado en caché flujos seguros
private double _x;
private bool _xCalculated;
private double GetX() {
if (!_xCalculated) {
_x = ... // some relatively expensive calculation
_xCalculated = true;
}
return _x;
}
Mi pregunta es, ¿es seguro para subprocesos? Por lo que puedo decir, el peor resultado de esto es que dos o más hilos entran en este método al mismo tiempo y calculan _x
varias veces, pero se garantiza que el resultado será el mismo para cualquier instancia de esta clase, por lo que no es un problema particularmente grande.
¿Entiendo esto correcto?
De hecho. ¿Por qué especular sobre cómo podría funcionar el hardware X mientras que Y no, cuando un BLOQUEO es más simple, más claro, garantizado y la diferencia de rendimiento no vale la pena hablar? – smirkingman
Haré pruebas de rendimiento para encontrar la mejor implementación para mis propósitos, pero quería saber si esta solución es válida para empezar. – derkyjadex
El problema con su solución es que es tan difícil saber si es correcta. Y dado que los problemas de enhebrado no son deterministas, ni siquiera puedes simplemente probarlos. – CodesInChaos