Elixir 中状态服务器进程与运行时考虑
1. 保持进程状态
服务器进程可以保持特定于进程的状态。例如,与数据库交互时,需要维护一个连接句柄。可以通过为循环函数添加额外参数来保持进程状态,以下是基本示例:
def start do
spawn(fn ->
initial_state = ...
loop(initial_state)
end)
end
defp loop(state) do
...
loop(state)
end
1.1 有状态数据库服务器示例
下面将使用随机数模拟连接句柄,扩展数据库服务器以保持连接状态。
defmodule DatabaseServer do
def start do
spawn(fn ->
connection = :rand.uniform(1000)
loop(connection)
end)
end
defp loop(connection) do
receive do
{:run_query, from_pid, query_def} ->
query_result = run_query(connection, query_def)
send(from_pid, {:query_result, query_result})
end
loop(connection)
end
超级会员免费看
订阅专栏 解锁全文
22

被折叠的 条评论
为什么被折叠?



