0
Erlang
M.Ikuta (@cooldaemon)
      2010/7/28
•       (    )


•   Erlang


•

•            /
•       (    )


•   Erlang


•

•            /
•   Erlang


•
•   Erlang    (   )           DSL


    •                     (    )




    •   DSL       (   )




    •
•       Erlang


    •

    •
•           Erlang


    •

        •            (   )
•           Erlang


    •

        •            (   )
•                                     …


    •            GC


    •   Supervisor, gen_*, proc_lib
•               …


    •   (   )
•       (    )


•   Erlang


•

•            /
•

    •

    •
•

    •

    •
•       …


    •

    •

    •
•       …


    •


    •
•

    •       ID


    •            (link/1, monitor/2)



        •
•

    •
        Erlang
•

    •   i/0,1, ni/0

    •   process_info/1,2

    •   pman:start/0

    •   etop, getop
•

    •   Erlang Shell   ni()   nodes().



    •   Mac     pman, getop    X
•

    •   etop, getop   PATH   code:lib_dir/1
•

    •   Msgs, MsgQ


        •

        •                (
                     )
•

    •   Reds

        •   Reductions


        •
•

    •   Reds

        •      process_flag/2
•

    •   spawn/1,2,3,4

    •   spawn_link/1,2,3,4

    •   spawn_monitor/1,3

    •   spawn_opt/2,3,4,5
•

    •   spawn/1,3

        •   spawn(fun () -> ok end).

        •
•

    •   spawn/1,3

        •           (   )



        •
•

    •   spawn/1,3

        •   try catch


            •           catch
•

    •   spawn/2,4

        •

        •
                    (register/1   )
•

    •   spawn_link   spawn_monitor       …


        •   spawn           (link    )


        •   spawn
•

    •

        •   erlang:system_info(process_limit).

    •

        •   erl +P 13421772
•

    •   register/2

    •   unregister/1

    •   whereis/1

    •   global         (   )
•

    •   register/2

        •   register(Name, Pid).

        •             ID
•

    •   register/2

        •


        •            (   )
•

    •   register/2

        •
•

    •   whereis/1

        •   whereis(Name).

        •                    ID


        •           ID
•

    •   unregister/1


    •   global
•

    •   !


    •   (Pid | Name) ! Message.

    •         (                   )


    •                    (          ...
•

    •

        •

        •
•

    •

        •   sample/send_message_vs_call_function.erl

        •
•

    •

        •

        •

            •
•

    •       …



        •


        •
•

    •   receive


    •   receive Message -> ok end.

    •       (                        )


    •
•

    •            0


    •       (_       )


        •
•

    •


    •
•

    •


        •                     ID


        •
            (make_ref/1   )
•        (                 )


    •   link/1

    •   erlang:monitor/2

    •   exit/1,2

    •   process_flag/1
•        (                )


    •   link/1

        •    link(Pid).

        •    link/1


             •
•        (       )


    •   link/1

        •            ID
•        (                      )


    •   erlang:monitor/2

        •    erlang:monitor(process, Pid).

        •       ...
•        (                      )


    •   erlang:monitor/2

        •


             •   {‘DOWN’, Reference, process, Pi...
•        (                     )


    •   link/1, erlang:monitor/2



        •
•        (                   )


    •   exit/1

        •    exit(Reason).

        •

        •
•        (                   )


    •   exit/1

        •    normal   kill
•        (                       )


    •   exit/1

        •
                            normal


             •

      ...
•        (                   )


    •   exit/1

        •    kill
                    killed
•        (                        )


    •   exit/2

        •    exit(Pid, Reason).

        •    Pid
•        (       )


    •   exit/2

        •

        •
•        (                       )


    •   process_flag/2

        •    process_flag(trap_exit, true).

        •
•        (                        )


    •   process_flag/2

        •


             •   {‘EXIT’, Pid, Reason}
•        (              )


    •   process_flag/2

        •    normal


        •    kill
•       (   )


    •

        •

        •

        •
•       (   )


    •
•       (    )


•   Erlang


•

•            /
•


•         OTP



•   OTP
•   Client/Server

    •   sample/server_client/server_client.erl

        •                        Key-Value Store
•   Client/Server

    •   sample/server_client/server_client.erl

        •   get/1


            •   self/0, make_ref/1
...
•   Client/Server

    •   sample/server_client/server_client_pm.erl

        •           server_client.erl


        •   ...
•   Client/Server

    •   sample/server_client/server_client_pm.erl

        •   register/2                          …


...
•   Client/Server

    •   sample/server_client/server_client_tx.erl

        •

            •
•   Finite State Machine

    •   sample/fsm/finite_state_machine.erl

        •       =


        •
•   Finite State Machine

    •   sample/fsm/mutex.erl

        •   Mutex Semaphore
•   Finite State Machine

    •   sample/fsm/mutex.erl

        •


            •
•   Event Managers and Handlers

    •   sample/event/*.erl

        •
•   Event Managers and Handlers

    •   sample/event/*.erl

        •        Behaviour


        •

        •   try catch
•   Supervisor Tree

    •   sample/supervisor/my_supervisor.erl

        •

            •   normal, undef


            •
•       (    )


•   Erlang


•

•            /
•

    •   server_client_tx.erl


        •                      get/0
•

    •   sample/tcp_server        echo


        •                   tcp_server
•                    …


    •   Supervisor



        •            ets
•                    …


    •   gen_tcp      gen_udp
        Supervisor


        •
            gen_server         proc_l...
Upcoming SlideShare
Loading in...5
×

Basic Study for Erlang #2

2,074

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,074
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×