Me di cuenta de doble bloqueo comprobado es defectuoso en Java debido al modelo de memoria, pero que generalmente se asocia con el patrón de singleton y la optimización de la creación del singleton.doble bloqueo bloqueado - objetivo c
¿Qué pasa con bajo este caso en Objective-C:
Tengo un indicador booleano para determinar si mi solicitud está transmitiendo datos o no. Tengo 3 métodos, startStreaming, stopStreaming, streamingDataReceived y protejo a ellos desde varios subprocesos usando:
- (void) streamingDataReceived:(StreamingData *)streamingData {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) stopStreaming {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) startStreaming:(NSArray *)watchlistInstrumentData {
if (!self.isStreaming) {
@synchronized(self) {
if (!self.isStreaming) {
¿Es esta doble verificación uneccessary? ¿La doble verificación tiene problemas similares en Object-C como en Java? ¿Cuáles son las alternativas a este patrón (antipatrón)?
Gracias
¿Puedes justificar esta respuesta? –
Puede ampliar la respuesta para agregar sugerencias de alternativas. Por ejemplo, ¿hay un equivalente a "transitorio" o AtomicInteger/etc en Objective-C? –