Nein, in Erlang müssen Sie immer noch die Fadensicherheit berücksichtigen, aber die Probleme sind viel einfacher zu lösen.
Ich lese an article in dem der Autor darauf hingewiesen, dass Ihre Nachrichten-API Threading-Probleme verursachen kann. Das Beispiel drehte sich um ein Bankkonto. Seine anfängliche Nachrichten-API hatte GET- und SET-Operationen. Ein Code, der 100 € einzahlen wollte, würde den aktuellen Wert erhalten, 100 addieren und dann das Ergebnis setzen. Dies funktioniert natürlich nur, wenn ein einzelner Prozess auf das Bankkonto zugreift. Sobald zwei Prozesse die Balance manipulieren, sind alle Wetten deaktiviert.
Seine Lösung war, die Nachrichten-API auf DEPOSIT und WITDDRAW zu ändern (er verwendet tatsächlich eine Nachricht - UPDATE - aber Sie bekommen die Idee). Dies führt dazu, dass die Interaktion atomare Semantik annimmt - der Hörprozess verarbeitet nur jeweils eine Einzahlung oder Auszahlung und blockiert andere Anfragen, bis die erste abgeschlossen ist.
Es ist erwähnenswert, dass dieses Problem im Wesentlichen das gleiche wie das Shared-Memory-Problem ist. (Wenn wir GET- und SET-Nachrichten verwenden, um mit einem Prozess zu interagieren, haben wir im Wesentlichen einen gemeinsamen Speicher erstellt). Ein weiterer Blogger compares ets to shared memory als auch. Solange Sie jedoch wissen, wo Sie Shared-Memory-artige Konstrukte eingeführt und den Zugriff auf diesen Shared Memory geregelt haben, sollten Sie keine Threading-Probleme haben (außer Deadlock, natürlich).
+1 genau richtig –
Aber Sie brauchen "Prozesssicherheit" :) –