Nutzt Erlang mehrere Kerne, wenn er eine gen_server
ausführt? Wenn ich ein paar verschiedene handle_cast
in der gen_server
haben, und sie häufig aufgerufen werden, könnten sie parallel laufen? Ich frage, weil, ich habe ein Design, wo ein handle_cast
Daten in eine Warteschlange eingibt, und das andere Daten aus der gleichen Warteschlange entfernt und verarbeitet es. Die Warteschlange wird im Zustand gen_server
gehalten. Ein Problem, wie ich es sehe, ist, dass ich eine neue Warteschlange (mit dem neuen Element hinzugefügt oder mit dem abgerufenen Element entfernt) zurückgeben muss, wenn Sie den Status zurückgeben. Wenn diese parallel laufen, können sich in der Warteschlange möglicherweise Race Conditions oder Inkonsistenzen entwickeln. Ist das der Fall?handle_cast, mehrere Kerne und Warteschlangen
1
A
Antwort
4
Die Antwort auf Ihre Frage ist nein. A gen_server
läuft in einem einzigen Erlang-Prozess. Ein einzelner Prozess kann nicht in mehrere Aktivitäten unterteilt werden, die gleichzeitig ausgeführt werden können.