Estoy escribiendo un programa en el que hay un objeto compartido por múltiples hilos:¿Debo bloquear el objeto cuando leo de él?
- A) hilos de escritura múltiples escribir en el objeto (todos corriendo la misma función )
- b) un hilo de lectura que accede el objeto cada 5 segundos
- C) un hilo que tiene acceso al objeto hay una petición del usuario leer
evidentemente, es necesario bloquear el objeto al escribir en él, ya que no queremos varios subprocesos para w rito al objeto al mismo tiempo.
Mis preguntas son:
- ¿Es también necesario bloquear el objeto cuando se lee de ella?
- ¿Tengo razón al pensar que si solo bloqueamos el objeto al escribir, basta con una sección crítica; pero si bloqueamos el objeto al leer o escribir, ¿es necesario un mutex?
Estoy haciendo esta pregunta porque en Microsoft Office, no es posible que dos instancias de Word accedan a un documento en modo de acceso de lectura/escritura; pero mientras se abre el documento en modo de lectura/escritura, es posible abrir otra instancia de Word para acceder al documento en modo de solo lectura. ¿Se aplicaría la misma lógica en el enhebrado?
Es útil observar cómo las bases de datos relacionales hacen esto, son los maestros del acceso a datos compartidos. – skaffman