を選択()ラッパー、IO::スレッドを選択-安全ですか?どのように働す。
-
06-07-2019 - |
質問
ということかしているスレッド:
sub new {
my $class = shift;
my $self = ref $class || $class;
bless { 'read_set' => IO::Select->new,
'write_set' => IO::Select->new,
'error_set' => IO::Select->new }, $self;
}
sub start {
my $self = shift;
$self->{'thread'} = threads->create(\&worker_thr, $self);
$self->{'thread'}->detach;
}
sub worker_thr {
my $self = shift;
while(1) {
my($read_active, $write_active, $error_active) =
IO::Select->select(
$self->{'read_set'},
$self->{'write_set'},
$self->{'error_set'},
undef
);
}
}
て提供していただきないタイムアウトへ select()
でブロックまで無期限に活動を検出しの記述子でも、"取扱い")を設定しかなかった場合に別のスレッドの変数を変更する機能を提供する内容の例新規追加されたソケットのポーリング)?
で実施されるスレッドを、安全な方法で、相対的にPerl POSIXスレッドの実装?
なると思うからできる棒のブロック select()
コブロック独自の範囲およびロックの設定や、より綺麗に、全体パッケージデータです。には、どうするのがベストなので目覚める select()
に戻り、別のスレッドでのコンテンツの操作できる?スレッド固有です。セマフォ?提案を歓迎します。
コmuchly!
編集: でも、スレッド固有の"信号"していきたいと思います。説明はこちら http://perldoc.perl.org/threads.html ):"その分、送信信号のスレッドにな遂行に著しい支障を操作のスレッドが現在取り組んでいる作の信号が発行の後に現在の操作が完了しました。たとえば、スレッドがこだわった、I/O、送信する信号がおかしくなることはありませんのI/O電話を中断することになると信号がたまります。"
ることがないといけないのかどうかを処理する必要がありますの号の目覚め select()
最大スレッドがっていない場合については、無期限にブロックの代わりに帰国した後、固定タイムアウト.
解決
デフォルトでは、perlのスレッドなデータなので、スレッドに変更設定には影響ありません。そしたらではでしょうがないと何をしたいすることができるようになります.
また眠りに別のスレッドまたはプロセスのブロックを選択し、値段が高くなりますが、追加パイプで読みください.その後でバイトを書きるパイプです。