Tag: ATOMIC
Aprendí que TSAN no comprende std::atomic_thread_fence, y para solucionarlo, debes decirle a TSAN qué variables atómicas se ven afectadas por la barrera, colocando __tsan_acquire(void *) y __tsan_release(void *) junto a ella (para las barreras de adquisición y liberación respectivamente). Pero, ¿qué pasa con las barreras de orden de secuencia consistente? . . . Read more
Entonces, en mi código hay el fragmento: std::atomic<uint>* atomic_buffer = reinterpret_cast<><uint>*>(data); const size_t num_atomic_elements = svm_data_size / sizeof(std::atomic<uint>); for (i = 0; i < num_atomic_elements; i++) { std::atomic_init(&atomic_buffer[i], std::atomic<uint>(0)); } Sin embargo, al ejecutarlo, se devuelve el siguiente error: error: no se encuentra una función coincidente para ‘atomic_init’ … nota: . . . Read more
En mi código, quiero usar un std::atomic_flag para sincronizar dos hilos. Específicamente, me gustaría usar las nuevas características wait y notify_all que se introducen en C++20. En resumen: un hilo está esperando a que la bandera esté lista mientras que otro hilo establecerá la bandera y emitirá la notificación. Sin . . . Read more
Tengo una aplicación de interfaz de usuario multiproceso que inicia numerosos hilos en segundo plano. Muchos de estos hilos ejecutan código que se ve de la siguiente manera: public void Update(){ if(Dispatcher.HasShutdownStarted()) return; Dispatcher.Invoke(()=>{…}); … } Luego, a veces, puede que un hilo ejecute el siguiente código: public void Shutdown(){ . . . Read more
Quiero implementar la función “add” a continuación como una operación atómica pura. var num int func add(max int) int { if num < max { num++ } return num } He intentado una edición: func add(max int64) int64 { for { old := atomic.LoadInt64(&x) if old + 1 < max . . . Read more