Articles of thread safety

¿Las variables estáticas de la función son seguras para subprocesos en GCC?

En el código de ejemplo void foo() { static Bar b; … } comstackdo con GCC, ¿ está garantizado que b se creará e inicializará de manera segura para subprocesos? En la página man de gcc, se encuentra la opción de línea de comando -fno-threadsafe-static : No emita el código adicional para usar las rutinas […]

Colección observable de ejecución rápida y segura para hilos

ObservableCollection s eleva notificaciones para cada acción realizada en ellos. En primer lugar, no agregan ni quitan llamadas de forma masiva, en segundo lugar no son seguras para subprocesos. ¿Esto no los hace más lentos? ¿No podemos tener una alternativa más rápida? Algunos dicen que ICollectionView envuelto alrededor de un ObservableCollection es rápido? ¿Qué tan […]

¿Es seguro el hilo std :: vector o boost :: vector?

Tengo varios hilos simultáneamente llamando a push_back() en un objeto compartido de std::vector . ¿Es seguro el hilo std::vector ? ¿O necesito implementar el mecanismo yo mismo para que sea seguro? Quiero evitar realizar trabajos adicionales de “locking y liberación” porque soy un usuario de la biblioteca en lugar de un diseñador de la biblioteca. […]

¿Deberíamos usar EventQueue.invokeLater para cualquier actualización de GUI en una aplicación de escritorio Java?

Sé que al usar este método, el parámetro ejecutable se envía al sistema EventQueue. Pero, ¿deberían hacerse todas las actualizaciones de GUI utilizando este método? Quiero decir, si quiero decir, cambiar un texto de JButton, ¿debería usar algo como esto? java.awt.EventQueue.invokeLater(new Runnable() { public void run() { jButton1.setText(“changed text”); } }); Si debería usar este […]

¿La iteración de los valores de ConcurrentHashMap es segura?

En javadoc para ConcurrentHashMap es el siguiente: Las operaciones de recuperación (incluido get) generalmente no se bloquean, por lo que pueden superponerse con las operaciones de actualización (incluso poner y eliminar). Las recuperaciones reflejan los resultados de las operaciones de actualización completadas más recientemente que se mantienen desde su inicio. Para operaciones agregadas como putAll […]

Instrucciones de SSE: ¿qué CPU puede hacer operaciones de memoria atómica de 16B?

Considere la posibilidad de tener acceso a una sola memoria (una lectura única o una sola escritura, no lectura + escritura) en una CPU x86. La instrucción está accediendo a 16 bytes (128 bits) de memoria y la ubicación de la memoria a la que se accede está alineada con 16 bytes. El documento “Libro […]

¿Las matrices C # son seguras?

En particular Crea una función para tomar una matriz y un índice como parámetros. Crea una matriz de elementos. Crear un bucle de conteo Dentro del ciclo de un nuevo hilo asigne una nueva instancia del objeto a la matriz usando el indexador pasado. Sé cómo administrar los hilos, etc. Me interesa saber si esta […]

Concurrente HashSet en .NET Framework?

Tengo la siguiente clase. class Test{ public HashSet Data = new HashSet(); } Necesito cambiar el campo “Datos” de diferentes subprocesos, por lo que me gustaría obtener algunas opiniones sobre mi implementación actual segura para subprocesos. class Test{ public HashSet Data = new HashSet(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ […]

¿HttpSession es seguro para las hebras, se configuran / obtienen las operaciones seguras de subprocesos de atributo?

Además, el objeto que se está configurando debe ser seguro para garantizar que sepamos cuál es el estado del objeto almacenado en la sesión. Además, estaba leyendo en la web que algunos sugieren usar: synchronized(session) { session.setAttribute(“abc”, “abc”); } ¿Es esta una sugerencia válida?

Enlazar multitonos seguros en Java

Dado el siguiente multitón: public class Multiton { private static final Multiton[] instances = new Multiton[…]; private Multiton(…) { //… } public static Multiton getInstance(int which) { if(instances[which] == null) { instances[which] = new Multiton(…); } return instances[which]; } } ¿Cómo podemos mantenerlo seguro y flojo sin la costosa sincronización del método getInstance () y […]