对于beam 来说,一般有几种存储数据的方式:
- process dictionary
- ETS table
如果把gen server 的state 也算是一种方式的话,那么还有:
- gen server state
在Elixir 的Macro 中,提供了很方便的方式,可以在编译期将数据编译成beam,最简单的方式就是使用 @expr
,关于@
的详细文档,可以参见 here.
defmodule T do | |
# refc binary | |
def test do | |
for _ <- 1..600, do: spawn fn -> start() end | |
end | |
defp start do | |
me = self() |
defmodule Pmap do | |
@moduledoc """ | |
Documentation for Pmap. | |
""" | |
def pmap(list, func) do | |
pmap(self(), 0, list, func, []) | |
end | |
@doc false |
use std::collections::VecDeque; | |
use std::collections::BTreeMap; | |
use std::fmt::Debug; | |
fn main() { | |
answer(); | |
transfer_ownership(); | |
ref_example(); | |
fn_example(); | |
scope_example(); |
defmodule Trade.MatchServer do | |
use GenServer | |
require Logger | |
@buy_queue :buy_queue | |
@sell_queue :sell_queue | |
@unhandled 0 | |
@before_generate_tx 1 | |
@after_generate_tx 2 |
对于beam 来说,一般有几种存储数据的方式:
如果把gen server 的state 也算是一种方式的话,那么还有:
在Elixir 的Macro 中,提供了很方便的方式,可以在编译期将数据编译成beam,最简单的方式就是使用 @expr
,关于@
的详细文档,可以参见 here.
% sys.erl | |
get_state(Name) -> | |
case send_system_msg(Name, get_state) of | |
{error, Reason} -> error(Reason); | |
State -> State | |
end. | |
send_system_msg(Name, Request) -> | |
case catch gen:call(Name, system, Request) of | |
{ok,Res} -> Res; |
#Fields: timestamp time-taken c-ip filesize s-ip s-port sc-status sc-bytes cs-method cs-uri-stem - rs-duration rs-bytes c-referrer c-user-agent customer-id x-ec_custom-1 | |
1523756544 3 86.45.165.83 1845784 152.195.141.240 80 TCP_HIT/200 1846031 GET http://c13.adrise.tv/04C0BF/v2/sources/content-owners/sgl-entertainment/275211/v0401185814-1389k.mp4+740005.ts - 0 486 "-" "TubiExoPlayer/2.12.9 (Linux;Android 6.0) ExoPlayerLib/2.4.2" 49343 "-" | |
1523756611 58 86.165.81.111 3364824 152.195.141.240 80 TCP_HIT/200 3365071 GET http://c13.adrise.tv/04C0BF/v2/sources/content-owners/sgl-entertainment/326260/v20169101326-1256x544-3063k.mp4+3713710.ts - 0 616 "-" "Mozilla/5.0 (Linux; Android 5.1.1; AFTT Build/LVY48F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36" 49343 "-" |
%%%------------------------------------------------------------------- | |
%%% @author redink | |
%%% @copyright (C) , redink | |
%%% @doc | |
%%% | |
%%% @end | |
%%% Created : by redink | |
%%%------------------------------------------------------------------- | |
-module(rcursor). |
-module('1e_sort'). | |
-compile(export_all). | |
-define(max_scope, 100000000). | |
-define(start_step, 1000000). | |
-define(user_table_num, 10). | |
start(N) -> | |
ets:new(scope_total_table, [named_table, ordered_set, public]), |
-module(gen_server_call_timeout). | |
%% API | |
-behaviour(gen_server). | |
%% API | |
-export([start/0]). | |
-export([run/2]). | |
-export([multi_run/0]). | |
-export([i/0]). |