Colección de citas famosas - Slogan de motivación - Acceso IOS (multiproceso) -Bloquear

Acceso IOS (multiproceso) -Bloquear

Dirección de recopilación de temas de la entrevista del supervisor

Los bloqueos básicos: bloqueos de giro, bloqueos mutex, bloqueos de lectura y escritura y otros, como bloqueos condicionales, bloqueos recursivos y semáforos, se implementan mediante la encapsulación de la capa superior.

El rendimiento del bloqueo de mayor a menor es:

OSSpinLock>

Dispatch_semaphone (semaphore)>;

Pthread_mutex (mutex)> ;

NSLock (bloqueo mutex)>

NSCondition (bloqueo condicional)>

Pthread_mutex (bloqueo recursivo mutex recursivo)>;

NSRecursiveLock >>:

NSConditionLock >>p>

Sincronización (exclusión mutua)

Se producirá un punto muerto.

Utilice NSLock para bloquear la sección crítica, ingrese el método 2 y vuelva a bloquear el mismo bloqueo, lo que provocará un punto muerto debido a la reentrada.

Utilice bloqueos recursivos para resolver el problema, aprovechando su característica reentrante: un hilo puede agregar N bloqueos sin causar un punto muerto.

Tres métodos clave para programar semáforos

Por lo tanto, se puede ver que los semáforos generalmente manejan el bloqueo (exclusión mutua), el retorno asincrónico y controlan la concurrencia de subprocesos.

Céntrese en la seguridad de la concurrencia multiproceso. Todos los ejemplos siguientes se basan en un total de 20 entradas y 10 entradas vendidas. Simulémoslo:

Se puede ver que los datos son realmente caóticos.

Luego tenemos que agregar un mutex para garantizar la seguridad del hilo, como se muestra a continuación

Los datos visibles están bien, al igual que el método.

Aquí hay otra solución, el manejo de semáforos. La ventaja de los semáforos depende del rendimiento de los bloqueos de la pregunta 2, incluido despacho_semaphone > NSLock (bloqueo mutex). Y dado que la cantidad de datos en este problema es relativamente pequeña, si la operación de sincronización es más complicada, es mejor usar semáforos. por eso utilizamos la cantidad de señales para garantizar la seguridad del proceso fuera de línea.