Elixir 中状态进程的深入探索与运行时考量
1. 保持进程状态
服务器进程具备保持特定进程状态的能力。例如,与数据库交互时,需要维护一个连接句柄。为了在进程中保持状态,可以为循环函数添加额外的参数。以下是基本示例:
def start do
spawn(fn ->
initial_state = ... # 进程创建时初始化状态
loop(initial_state) # 带着状态进入循环
end)
end
defp loop(state) do
...
loop(state) # 循环中保持状态
end
以扩展数据库服务器为例,使用随机数模拟连接句柄,代码如下:
defmodule DatabaseServer do
...
def start do
spawn(fn ->
connection = :rand.uniform(1000)
loop(connection)
end)
end
...
end
接着修改循环函数以使用连接:
defmodule DatabaseServer do
...
defp loop(connection) do
receive do
{:run_query,
超级会员免费看
订阅专栏 解锁全文
31

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



