Day 29 |> Elixir 并行性 (三)

Agent
Agent 模组提供了我们可以实践一个基本的服务器的一个 API 的功能。
可以让我们在不同的节点间共用状态及更新状态。

透过 Agent,我们可以将一个模组包装成可以初始化的一个服务器,并且可以让不同行程间去做存取。

defmodule Test do
  use Agent

  def start_link(initail_state) do
    Agent.start_link(fn -> initail_state end, name: __MODULE__)
  end

  def value do
    Agent.get(__MODULE__, &(&1))
  end

  def add do
    Agent.update(__MODULE__, &(&1 + 1))
  end
  
  def sub do
    Agent.update(__MODULE__, &(&1 - 1))
  end
end

__MODULE__是模组名称,也就是Test。如此,我们便成功完成了一个可以做为一个简易API执行的模组。

iex> Test.value()    
0
iex> Test.add
:ok
iex> Test.add
:ok
iex> Test.value()
2
iex> Test.sub      
:ok
iex> Test.value()
1

在 children 中放入 Test 以及其初始值的 Tuple,便能在监督树下运行此 API。

children = [
  {Test, 0}
]

Supervisor.start_link(children, strategy: :one_for_all)

<<:  [Day30] AWS Elastic Load Balancing (ELB)

>>:  The Twelve-Factor App

冒险村23 - Design Pattern(3) - Builder

23 - Design Pattern(3) - Builder Builder pattern 常...

【没钱买ps,PyQt自己写】Day 21 - 透过 PyQt 实现滑鼠监听总整理,完全掌握滑鼠控制 (listen mouse)

看完这篇文章你会得到的成果图 前言 这一篇我们会拿现有的 day 17 成品来改, 我们这篇主要要学...

110/18 - Android 10以上图片剪裁

Android 10以上就很简单,直接使用MediaStore抓到图片路径,然後送给图片剪裁就好 i...

学习笔记:一起进入 PixiJS 的世界 (四)

建立文字物件 使用new建构出PIXI.Text()文字物件,并将文字的内容做为第一个参数传入,再将...

Day35. 代理模式

本文同步更新於blog Proxy Pattern 为另一个对象提供一个替身或占位符以控制这个对象...