2016-06-28 10 views
1

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

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.

Verwandte Themen