Exemple 1 de compartició de memòria ----------------------------------- El fitxer :file:`comptador.py` crea 10 fils de control que incrementa en 1 la variable compartida :py:obj:`n`. La execució de :code:`n = n + 1` per incrementar la variable :py:obj:`n` pot donar problemes si la instrucció es tradueix a llenguatge màquina com vàries instruccions (consultar n i baixar a un registre, incrementar registre, guardar resultat registre en l'indret de :py:obj:`n`. Si es tradueix com una sola instrucció o no hi ha problema ja que no es pot interrompre una instrucció del processador enmig de la seva execució. Depén també de com actúa el planificador del sistema operatiu. Per provocar el problema s'ha intercalat la suspensió del fil mitjançant :code:`sleep` 's de manera que el càlcul de l'increment descomposat queda interromput. Podreu observar en diverses execucions de :file:`comptador.py` que els resultats son incerts. Amb :file:`comptadormutex.py` el resultat sempre serà 10 per l'increment individual de cada fil. Comptador sense pany (lock) ........................... Fitxer :download:`comptador.py` .. literalinclude:: comptador.py :language: python Comptador amb pany (lock) ......................... Fitxer :download:`comptadormutex.py` .. literalinclude:: comptadormutex.py :language: python