#author("2020-11-21T07:52:57+00:00","","")
#topicpath

////////////////////////////////////////////////////////////////////////////////
* 目次 [#p691c381]
#contents();

////////////////////////////////////////////////////////////////////////////////
* Thread [#w8ff014e]

//==============================================================================
** thread の生成 [#vb28c0fa]
- threads を使う。
 use threads;
 
 # thread の生成
 # スレッド関数を new の第1引数に、スレッド関数に渡す引数を第2引数以降に指定する。
 my ($thread_1) = threads->new(\&thread_func, "t1");
 
 # thread 終了の待ち合わせ
 $thread_1->join;
 
 # thread 関数
 sub thread_func {
     # 処理
 }


//==============================================================================
** queue による通信 [#lee56779]
- Thread::Queue を使う。

 use threads;
 use Thread::Queue;
 
 my ($queue_a) = new Thread::Queue;
 
 # thread 生成時に、 thread 関数の引数として Queue を渡す:
 my ($thread_a) = threads->new(\&thread_func_a, $queue_a);
 
 $thread_a->join;
- Queue に積む
 $queue_a->enqueue(<データ>);
- Queue から引き抜いて $data に格納する
 $data = $queue_a->dequeue();

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS