La pregunta es un poco general para producir una respuesta muy precisa, pero la resolveré … me temo que no puedo sugerir una mejor directriz para el enfoque sin bloqueo que “pensar mucho en y prueba mucho tu solución “.
Para problemas con comparar e intercambiar, solo puedo pensar en uno, pero en las condiciones adecuadas, aparece. Toda la familia de operaciones de “captación y phi” de diversos poderes expresivos (que van desde probar y configurar, atrapar y agregar, comparar y intercambiar) comparten el problema de que hacen un verdadero desayuno de cerdo. fuera de caché coherencia. En un entorno en el que existe cierta disputa por la ubicación que desea actualizar atómicamente, las copias almacenadas localmente en caché (potencialmente distribuidas por toda la máquina) requieren invalidación y vaciado / reescritura durante la operación atómica. en un procesador, lo que se convierte en una penalización grave si se hace mucho. Además, si imaginamos algún tipo de esquema de directorio u otra propiedad NUMA para grandes mem compartidas. el acceso, el almacenamiento en caché favorecería (bajo contención) a los procesadores que están cerca del banco de memoria donde se aloja el valor.
Si nos fijamos en los documentos sobre el diseño de Stanford DASH, llegaron a recomendar la implementación de un sistema de memoria completamente separado, sin caché, especialmente por el bien de las operaciones atómicas, y algunas arquitecturas comerciales siguieron su ejemplo (las máquinas Origin presentaron instrucciones como esta que funcionan solo con “memoria de depósito atómico”, completa con una política de asignación independiente torpe, IIRC).
- ¿Quiénes son los mejores informáticos teóricos?
- ¿Qué algoritmos se pueden usar para agrupar opiniones sobre un tema expresado en lenguaje natural?
- ¿El aprendizaje automático es un viejo campo de CS? ¿Y cuál sería el futuro del aprendizaje automático en los próximos 10 años?
- ¿En qué tipo de proyectos personales puedo trabajar para ayudar a mi solicitud de escuela de posgrado CS (tengo 2 años)?
- ¿Cuál es la investigación de HCI que fue hace 10 años pero que ya no es la tendencia?
Si utiliza atómicos sin bloqueo de rodadura (cargas vinculadas a una reescritura condicional), descubrirá el efecto de caché injusto antes mencionado si muchos procesadores están luchando por la misma dirección, pero de lo contrario, me atrevería a adivinar que existe es una cierta cantidad de compatibilidad futura en la no creación de algoritmos que requieren soporte ISA para operaciones de captación y phi. (Eso * es * una suposición, renuncias y todo, haz de eso lo que quieras).
En los casos en los que realmente no espera ver mucha disputa (es decir, la atomicidad es más una protección contra razas raras que un medio de imponer el orden en una raza muy común), sospecho que tendrá dificultades para producir cualquier evidencia cuantitativa de que uno u otro enfoque es mejor.
Sin embargo, antes de comenzar a hacer inferencias sobre esto, verifique si comparar e intercambiar está en el ISA de su máquina, o si es un compilador intrínseco tonto generar una secuencia de instrucciones equivalente. Puede que no haya tanta elección como indican las apariencias.