Wähle eine Sperre, die wirklich alle Schreiber derselben Ressource erfasst.
Ein Lock schützt nur Teilnehmer, die dieselbe wirksame Sperre benutzen. Zwei Instanzen mit je einem eigenen Thread-Lock können gleichzeitig schreiben. Auch zwei Prozesse oder Rechner teilen einen lokalen Lock nicht automatisch. Zeichne daher den Weg vom Startknopf über Worker zur gemeinsamen Ressource. Für zwei lokale Prozesse braucht das Design eine geprüfte gemeinsame Prozesssperre oder einen atomaren Datenbankanspruch. Halte sie bis zum Ende aller zugehörigen Schreibarbeit. Bei einer verteilten zeitlich begrenzten Sperre müssen Verlängerung, Ablauf und das Abweisen veralteter Besitzer ausdrücklich geregelt werden; das folgt nicht aus dem Wort Lock.
Ein Beispiel
Zwei Tabs starten Worker A und Worker B, beide schreiben den fiktiven Katalog. Ein Attribut busy=False in jedem Worker lässt beide starten. Ein gemeinsamer atomarer Anspruch für catalog-export lässt nur A gewinnen; B erhält busy. Der Mehrprozesstest muss echte konkurrierende Ansprüche erzeugen. Zwei nacheinander aufgerufene Modellfunktionen prüfen nur die Entscheidungslogik.