2010-07-23 14 views
7

Mi pregunta principal es si el objeto de bloqueo Threading crea bloqueos atómicos? No dice que el bloqueo es atómico en la documentación del módulo. en la documentación mutex de pitones dice que el bloqueo mutex es atómico, pero parece que lo leí en alguna parte que, de hecho, no lo es. Me pregunto si alguien podría darme un poco de información sobre este tema. ¿Qué cerradura debo usar? Actualmente estoy ejecutando mis scripts usando Python 2.4Bloqueos Mutex frente a bloqueos Threading. ¿Cuál usar?

Respuesta

13

Las cerraduras de cualquier naturaleza serían bastante inútiles si no fueran atómicas: el objetivo de la cerradura es permitir operaciones atómicas de mayor nivel.

Todos los objetos de sincronización de threading (bloqueos, rlocks, semáforos, semáforos delimitados) utilizan instrucciones atómicas, al igual que los mutex.

Usted debe uso threading, ya que es en realidad mutex obsoleto en el futuro (y eliminado en Python 3).

+0

Gracias, solo quería comprobarlo dos veces. – Richard

+1

Y una razón más grande para no usar el módulo 'mutex': sus bloqueos son ignorantes de subprocesos. Son para usar en programas de un solo subproceso que usan el módulo 'sched'. Esencialmente, son inútiles. –

+0

@Thomas Wouters, entiendo por qué ya no mantienen el módulo mutex en python 3 – Richard

Cuestiones relacionadas