Tengo un bloque de código al que se accede con frecuencia y desde el hilo principal o varios otros hilos de fondo. Necesito asegurarme de que este código solo se procese de a uno por vez.@synchronized() y NSLock diferencias
Actualmente estoy usando un bloque @synchronized(self) { }
pero no estoy seguro si eso proporciona la protección correcta. ¿Cómo difiere de una instancia de NSLock
?
Finalmente, ¿alguien puede sugerir cómo puedo proteger mi método? El método está en mi aplicación delegue, y acceder a ella desde varios subprocesos llamando:
[[[UIApplication sharedApplication] delegate] myMethod];
Muchas gracias,
Mike
¡Gracias por su ayuda! ¿Es correcto usar siempre "self"? Self en este caso apuntará al delegado de la aplicación, no importa cómo lo llame. ¡Estoy confundido sobre por qué tienes que pasar algo! –
Utiliza (auto) si desea bloquear "por instancia" y [Clase de clase de clase] si desea bloquear "por clase". (self) significa que la ejecución de la sección crítica debe sincronizarse para el objeto actual (particular). –
¡Ahhh, lo entiendo! Muchas gracias :-) –