Basic Study for Erlang #2

2,555 views

Published on

Basic Study for Erlang #2

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,555
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
30
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Basic Study for Erlang #2

  1. 1. Erlang M.Ikuta (@cooldaemon) 2010/7/28
  2. 2. • ( ) • Erlang • • /
  3. 3. • ( ) • Erlang • • /
  4. 4. • Erlang •
  5. 5. • Erlang ( ) DSL • ( ) • DSL ( ) •
  6. 6. • Erlang • •
  7. 7. • Erlang • • ( )
  8. 8. • Erlang • • ( )
  9. 9. • … • GC • Supervisor, gen_*, proc_lib
  10. 10. • … • ( )
  11. 11. • ( ) • Erlang • • /
  12. 12. • • •
  13. 13. • • •
  14. 14. • … • • •
  15. 15. • … • •
  16. 16. • • ID • (link/1, monitor/2) •
  17. 17. • • Erlang
  18. 18. • • i/0,1, ni/0 • process_info/1,2 • pman:start/0 • etop, getop
  19. 19. • • Erlang Shell ni() nodes(). • Mac pman, getop X
  20. 20. • • etop, getop PATH code:lib_dir/1
  21. 21. • • Msgs, MsgQ • • ( )
  22. 22. • • Reds • Reductions •
  23. 23. • • Reds • process_flag/2
  24. 24. • • spawn/1,2,3,4 • spawn_link/1,2,3,4 • spawn_monitor/1,3 • spawn_opt/2,3,4,5
  25. 25. • • spawn/1,3 • spawn(fun () -> ok end). •
  26. 26. • • spawn/1,3 • ( ) •
  27. 27. • • spawn/1,3 • try catch • catch
  28. 28. • • spawn/2,4 • • (register/1 )
  29. 29. • • spawn_link spawn_monitor … • spawn (link ) • spawn
  30. 30. • • • erlang:system_info(process_limit). • • erl +P 13421772
  31. 31. • • register/2 • unregister/1 • whereis/1 • global ( )
  32. 32. • • register/2 • register(Name, Pid). • ID
  33. 33. • • register/2 • • ( )
  34. 34. • • register/2 •
  35. 35. • • whereis/1 • whereis(Name). • ID • ID
  36. 36. • • unregister/1 • global
  37. 37. • • ! • (Pid | Name) ! Message. • ( ) • ( )
  38. 38. • • • •
  39. 39. • • • sample/send_message_vs_call_function.erl •
  40. 40. • • • • •
  41. 41. • • … • •
  42. 42. • • receive • receive Message -> ok end. • ( ) •
  43. 43. • • 0 • (_ ) •
  44. 44. • • •
  45. 45. • • • ID • (make_ref/1 )
  46. 46. • ( ) • link/1 • erlang:monitor/2 • exit/1,2 • process_flag/1
  47. 47. • ( ) • link/1 • link(Pid). • link/1 •
  48. 48. • ( ) • link/1 • ID
  49. 49. • ( ) • erlang:monitor/2 • erlang:monitor(process, Pid). • ( )
  50. 50. • ( ) • erlang:monitor/2 • • {‘DOWN’, Reference, process, Pid, Reason}
  51. 51. • ( ) • link/1, erlang:monitor/2 •
  52. 52. • ( ) • exit/1 • exit(Reason). • •
  53. 53. • ( ) • exit/1 • normal kill
  54. 54. • ( ) • exit/1 • normal • • exit(normal).
  55. 55. • ( ) • exit/1 • kill killed
  56. 56. • ( ) • exit/2 • exit(Pid, Reason). • Pid
  57. 57. • ( ) • exit/2 • •
  58. 58. • ( ) • process_flag/2 • process_flag(trap_exit, true). •
  59. 59. • ( ) • process_flag/2 • • {‘EXIT’, Pid, Reason}
  60. 60. • ( ) • process_flag/2 • normal • kill
  61. 61. • ( ) • • • •
  62. 62. • ( ) •
  63. 63. • ( ) • Erlang • • /
  64. 64. • • OTP • OTP
  65. 65. • Client/Server • sample/server_client/server_client.erl • Key-Value Store
  66. 66. • Client/Server • sample/server_client/server_client.erl • get/1 • self/0, make_ref/1 • set/2
  67. 67. • Client/Server • sample/server_client/server_client_pm.erl • server_client.erl • Parameterized Module
  68. 68. • Client/Server • sample/server_client/server_client_pm.erl • register/2 … • •
  69. 69. • Client/Server • sample/server_client/server_client_tx.erl • •
  70. 70. • Finite State Machine • sample/fsm/finite_state_machine.erl • = •
  71. 71. • Finite State Machine • sample/fsm/mutex.erl • Mutex Semaphore
  72. 72. • Finite State Machine • sample/fsm/mutex.erl • •
  73. 73. • Event Managers and Handlers • sample/event/*.erl •
  74. 74. • Event Managers and Handlers • sample/event/*.erl • Behaviour • • try catch
  75. 75. • Supervisor Tree • sample/supervisor/my_supervisor.erl • • normal, undef •
  76. 76. • ( ) • Erlang • • /
  77. 77. • • server_client_tx.erl • get/0
  78. 78. • • sample/tcp_server echo • tcp_server
  79. 79. • … • Supervisor • ets
  80. 80. • … • gen_tcp gen_udp Supervisor • gen_server proc_lib

×