- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-11-14T02:57:27+00:00","","")
#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();