soy bastante nuevo en la programación multi-hilo y pregunto si está bien o para hacer una propiedad comolo hace tiene sentido hacer atómica una bandera BOOL en múltiples hilos de programación
@property BOOL shouldDoIt; //atomic
que será utilizado en un bucle que se llama en el fondo
- (void) loop{
// ... do stuff ...
if (self.shouldDoIt) {
[self doIt];
self.shouldDoIt = NO;
}
// ... do more stuff ...
}
y cambiado en un método llamado desde el hilo principal
- (void) methodCalledFromMainThread{
self.shouldDoIt = YES;
}
¿Tengo tengo para hacerlo atómico o no cambia nada? Sé que atómico es lento en comparación con no atómico y mi programa necesita más velocidad, pero si no se usa atómico, ¿podría fallar hacer if (shouldDoIt){
?
Si solo usamos un subproceso ** writer ** thread y ** reader **, no necesitamos acceso entrelazado a la variable ** shouldDoI ** por supuesto, el subproceso principal primero debe esperar ** shouldDoI ** para convertirse en 0 antes de volver a establecer el ** shouldDoI **. –
JeremyP me has hecho darme cuenta de la diferencia entre volver a configurar NODoIt a NO antes y después de doIt. +1 para OSAtomicTestAndClear/SetBarrier();) – nacho4d