es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tag: BOOST-MUTEX

Despacho de datos iguales a goroutines en Golang

Hay una rutina en go que está generando datos. También hay muchas rutinas go que manejan las respuestas HTTP. Quiero que los datos generados sean pasados ​​a todas las rutinas de manejo HTTP. Todos los datos enviados son iguales. He pensado en dos soluciones. Usar un pipeline de canales para . . . Read more

Cómo destruir una clase con un miembro mutex?

Tengo una clase con un miembro “std::shared_mutex” que protege algún recurso que la clase posee (digamos, un vector). Mi problema es que durante la destrucción de la clase, otro hilo puede estar sosteniendo el mutex. La destrucción de la clase entonces causa un error. Una solución parece ser adquirir el . . . Read more

Explicando los bloqueos con un solo candado desde “El Pequeño Libro de Go”: Los bloqueos, también conocidos como deadlocks, pueden ocurrir cuando múltiples goroutines (rutinas concurrentes de Go) necesitan acceder a un recurso compartido y cada una de ellas bloquea ese recurso con un solo candado. Imaginemos un escenario en el que una goroutine A bloquea un recurso con su candado mientras espera un resultado, pero esa goroutine no puede continuar ya que otra goroutine B también está esperando el mismo recurso. Dado que el candado ya está ocupado por la goroutine A, la goroutine B no puede acceder al recurso y se queda esperando. Ahora tenemos un deadlock, donde ninguna de las dos goroutines puede avanzar, resultando en un bloqueo del programa. Es importante tener en cuenta que este problema solo ocurre cuando se utiliza un solo candado para bloquear el recurso compartido.

Estoy leyendo El Pequeño Libro de Go. En la página 76 se muestra cómo puedes generar un bloqueo con un solo bloqueo: var ( lock sync.Mutex ) func main() { go func() { lock.Lock() }() time.Sleep(time.Millisecond * 10) lock.Lock() } Al ejecutar esto se produce un bloqueo como explica el . . . Read more