Rubyの勉強をしている。
そのとき、スレッドを並行実行するサンプルを丸写しした。
そのサンプルをErlang版として記述した。
以下にそれをコピペしておく。
◆並行実行動作
1.2つのプロセスが生成される。2.それぞれのプロセスはある時間(秒)スリープして、時間経過後、ある文字を標準出力する。
3.7秒後メインプロセスが終了する(生成したプロセスも終了する)。
◆ソース
-module(test_thread_start). -compile(export_all). %% 標準出力 log_print( Start_time, String ) -> { _, Now, _ } = erlang:now(), Time = Now - Start_time, io:format( "~ps: ~s~n", [ Time, String ] ). %% プロセス生成 loop_thread( Start_time, Sec, Str ) -> spawn( test_thread_start, thread, [ Start_time, Sec, Str ] ). %% 生成したプロセスの動作 thread( Start_time, Wait_time, String ) -> timer:sleep( Wait_time ), log_print( Start_time, String ), thread( Start_time, Wait_time, String ). start() -> { _, Start_time, _ } = erlang:now(), log_print( Start_time, "Start" ), loop_thread( Start_time, 2000, "a" ), loop_thread( Start_time, 3000, "b" ), timer:sleep( 7000 ), log_print( Start_time, "End" ).