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