Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150098
  • 博文数量: 92
  • 博客积分: 2035
  • 博客等级: 大尉
  • 技术积分: 874
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-10 09:03
文章分类

全部博文(92)

文章存档

2010年(38)

2009年(54)

我的朋友

分类:

2009-11-06 11:31:36

http://blog.csdn.net/karl_max/category/402158.aspx 这里的笔记也不错!


Pid ! {self(),{circle, 8}}


-module(area_server1).
-export([loop/0,rpc/2]).

rpc(Pid, Request) ->
    Pid ! {self(), Request},
    receive
        {Pid,Response} -> Response
    end.

loop() ->
    io:format("server pid:~p--~n",[self()]),
    receive
        {From, {rectangle,Width,Ht}} ->
            io:format("server pid:~p--client ip ~p----",[self(),From]),
            From ! {self(), Width * Ht},
            loop();
        {From, {circle, R}} ->
            io:format("server pid:~p--client ip ~p----",[self(),From]),
            From ! {self(), 3.14 * R * R},
            loop();
        {From, Other}  ->
            io:format("server pid:~p--client ip ~p----",[self(),From]),
            From ! {self(), {error, Other}},
            loop()
    end.



-module(clock).
-export([start/2,stop/0]).

start(Time, Fun) -> %%多次调用start虽然失败,但是创建的进程却一直在跑。
    register(clock, spawn(fun() -> tick(Time, Fun) end)).
   
stop() -> clock ! stop.

tick(Time, Fun) ->
    io:format(" now is ~w""        prosess id is ~w~n",[time(),self()]),
    receive
        {zdx,_} -> io:format("received!!~p~n",[time()]),
                    tick(Time,Fun);%%再次调用这个程序的堆栈,一直循环同一个程序实例!! self()一直保持不变的!
        stop -> void
    after Time -> Fun(),
                  tick(Time, Fun)
    end.
shell:   clock:start(10000,fun() -> io:format("time is ~p",[time()]) end).
 clock!{zdx, hel}








测试erlang进程  2G内存可以跑到100万的进程,100万个进程啊,同时pc上还有其他东西跑!
-module(processes).
-export([max/1]).

max(N) ->
    Max=erlang:system_info(process_limit),
    io:format("Maximum allowed processes is:~p~n",[Max]),
    statistics(runtime),
    statistics(wall_clock),
    L =for(1,N,fun()-> spawn(fun() -> wait() end) end),
    {_,Time1} = statistics(runtime),
    {_,Time2} = statistics(wall_clock),
    lists:foreach(fun(Pid) ->Pid ! die end ,L),
    U1 = Time1 *1000/N,
    U2 = Time2 *1000/N,
    io:format("Process spawn time = ~p(~p) microseconds ~n " ,[U1,U2]).

wait()  ->
    receive
        die -> void
    end.
   
for(N,N,F) ->[F()];
for(I,N,F) -> [F()|for(I+1,N,F)].

8.8 如何编写一个并发程序
-module().
-export().

start() ->
    spawn(fun loop/0).
rpc() ->

loop() ->



erlang 函数的参数传递: 如果传递的参数为函数那么需要使用如下方式:
以fun开头,后面是export 参数的格式 fun/n  n为此函数参数的个数
如:
-module(forasc).
-export([ascpr/0,for1/3]).

ascpr() ->    for1(1,256,fun fun1/2).
   
for1(Max,Max,F) ->[F(Max,[Max])];
for1(I,Max,F)   ->[F(I,[I])|for1(I+1,Max,F)].

fun1(K,M) -> io:format("ascII: ~-10w: ~p~n",[K,M]).
  打出asc码


43> forasc:ascpr().
ascII: 1    : [1]
ascII: 2    : [2]
ascII: 3    : [3]
ascII: 4    : [4]
ascII: 5    : [5]
ascII: 6    : [6]
ascII: 7    : [7]
ascII: 8    : "\b"
ascII: 9    : "\t"
ascII: 10   : "\n"
ascII: 11   : "\v"
ascII: 12   : "\f"
ascII: 13   : "\r"
ascII: 14   : [14]
ascII: 15   : [15]
ascII: 16   : [16]
ascII: 17   : [17]
ascII: 18   : [18]
ascII: 19   : [19]
ascII: 20   : [20]
ascII: 21   : [21]
ascII: 22   : [22]
ascII: 23   : [23]
ascII: 24   : [24]
ascII: 25   : [25]
ascII: 26   : [26]
ascII: 27   : "\e"
ascII: 28   : [28]
ascII: 29   : [29]
ascII: 30   : [30]
ascII: 31   : [31]
ascII: 32   : " "    "\s"
ascII: 33   : "!"
ascII: 34   : "\""
ascII: 35   : "#"
ascII: 36   : "$"
ascII: 37   : "%"
ascII: 38   : "&"
ascII: 39   : "'"
ascII: 40   : "("
ascII: 41   : ")"
ascII: 42   : "*"
ascII: 43   : "+"
ascII: 44   : ","
ascII: 45   : "-"
ascII: 46   : "."
ascII: 47   : "/"
ascII: 48   : "0"
ascII: 49   : "1"
ascII: 50   : "2"
ascII: 51   : "3"
ascII: 52   : "4"
ascII: 53   : "5"
ascII: 54   : "6"
ascII: 55   : "7"
ascII: 56   : "8"
ascII: 57   : "9"
ascII: 58   : ":"
ascII: 59   : ";"
ascII: 60   : "<"
ascII: 61   : "="
ascII: 62   : ">"
ascII: 63   : "?"
ascII: 64   : "@"
ascII: 65   : "A"
ascII: 66   : "B"
ascII: 67   : "C"
ascII: 68   : "D"
ascII: 69   : "E"
ascII: 70   : "F"
ascII: 71   : "G"
ascII: 72   : "H"
ascII: 73   : "I"
ascII: 74   : "J"
ascII: 75   : "K"
ascII: 76   : "L"
ascII: 77   : "M"
ascII: 78   : "N"
ascII: 79   : "O"
ascII: 80   : "P"
ascII: 81   : "Q"
ascII: 82   : "R"
ascII: 83   : "S"
ascII: 84   : "T"
ascII: 85   : "U"
ascII: 86   : "V"
ascII: 87   : "W"
ascII: 88   : "X"
ascII: 89   : "Y"
ascII: 90   : "Z"
ascII: 91   : "["
ascII: 92   : "\\"
ascII: 93   : "]"
ascII: 94   : "^"
ascII: 95   : "_"
ascII: 96   : "`"
ascII: 97   : "a"
ascII: 98   : "b"
ascII: 99   : "c"
ascII: 100  : "d"
ascII: 101  : "e"
ascII: 102  : "f"
ascII: 103  : "g"
ascII: 104  : "h"
ascII: 105  : "i"
ascII: 106  : "j"
ascII: 107  : "k"
ascII: 108  : "l"
ascII: 109  : "m"
ascII: 110  : "n"
ascII: 111  : "o"
ascII: 112  : "p"
ascII: 113  : "q"
ascII: 114  : "r"
ascII: 115  : "s"
ascII: 116  : "t"
ascII: 117  : "u"
ascII: 118  : "v"
ascII: 119  : "w"
ascII: 120  : "x"
ascII: 121  : "y"
ascII: 122  : "z"
ascII: 123  : "{"
ascII: 124  : "|"
ascII: 125  : "}"
ascII: 126  : "~"
ascII: 127  : [127]
ascII: 128  : [128]
ascII: 129  : [129]
ascII: 130  : [130]
ascII: 131  : [131]
ascII: 132  : [132]
ascII: 133  : [133]
ascII: 134  : [134]
ascII: 135  : [135]
ascII: 136  : [136]
ascII: 137  : [137]
ascII: 138  : [138]
ascII: 139  : [139]
ascII: 140  : [140]
ascII: 141  : [141]
ascII: 142  : [142]
ascII: 143  : [143]
ascII: 144  : [144]
ascII: 145  : [145]
ascII: 146  : [146]
ascII: 147  : [147]
ascII: 148  : [148]
ascII: 149  : [149]
ascII: 150  : [150]
ascII: 151  : [151]
ascII: 152  : [152]
ascII: 153  : [153]
ascII: 154  : [154]
ascII: 155  : [155]
ascII: 156  : [156]
ascII: 157  : [157]
ascII: 158  : [158]
ascII: 159  : [159]
ascII: 160  : "?
ascII: 161  : "?
ascII: 162  : "?
ascII: 163  : "?
ascII: 164  : "?
ascII: 165  : "?
ascII: 166  : "?
ascII: 167  : "?
ascII: 168  : "?
ascII: 169  : "?
ascII: 170  : "?
ascII: 171  : "?
ascII: 172  : "?
ascII: 173  : "?
ascII: 174  : "?
ascII: 175  : "?
ascII: 176  : "?
ascII: 177  : "?
ascII: 178  : "?
ascII: 179  : "?
ascII: 180  : "?
ascII: 181  : "?
ascII: 182  : "?
ascII: 183  : "?
ascII: 184  : "?
ascII: 185  : "?
ascII: 186  : "?
ascII: 187  : "?
ascII: 188  : "?
ascII: 189  : "?
ascII: 190  : "?
ascII: 191  : "?
ascII: 192  : "?
ascII: 193  : "?
ascII: 194  : "?
ascII: 195  : "?
ascII: 196  : "?
ascII: 197  : "?
ascII: 198  : "?
ascII: 199  : "?
ascII: 200  : "?
ascII: 201  : "?
ascII: 202  : "?
ascII: 203  : "?
ascII: 204  : "?
ascII: 205  : "?
ascII: 206  : "?
ascII: 207  : "?
ascII: 208  : "?
ascII: 209  : "?
ascII: 210  : "?
ascII: 211  : "?
ascII: 212  : "?
ascII: 213  : "?
ascII: 214  : "?
ascII: 215  : "?
ascII: 216  : "?
ascII: 217  : "?
ascII: 218  : "?
ascII: 219  : "?
ascII: 220  : "?
ascII: 221  : "?
ascII: 222  : "?
ascII: 223  : "?
ascII: 224  : "?
ascII: 225  : "?
ascII: 226  : "?
ascII: 227  : "?
ascII: 228  : "?
ascII: 229  : "?
ascII: 230  : "?
ascII: 231  : "?
ascII: 232  : "?
ascII: 233  : "?
ascII: 234  : "?
ascII: 235  : "?
ascII: 236  : "?
ascII: 237  : "?
ascII: 238  : "?
ascII: 239  : "?
ascII: 240  : "?
ascII: 241  : "?
ascII: 242  : "?
ascII: 243  : "?
ascII: 244  : "?
ascII: 245  : "?
ascII: 246  : "?
ascII: 247  : "?
ascII: 248  : "?
ascII: 249  : "?
ascII: 250  : "?
ascII: 251  : "?
ascII: 252  : "?
ascII: 253  : "?
ascII: 254  : "?
ascII: 255  : ""
ascII: 256  : [256]
[ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,ok,
 ok,ok,ok,ok,ok,ok,ok,ok,ok,ok|...]
44>

阅读(409) | 评论(0) | 转发(0) |
0

上一篇:erlang 语法摘记2

下一篇:工作流入门

给主人留下些什么吧!~~