読者です 読者をやめる 読者になる 読者になる

Perl徹底攻略

Perl徹底攻略を読んでる。UNIX プログラミングの勘所とWebアプリケーションのパフォーマンス改善が特にすばらしい。

ところで、UNIX プログラミングの勘所にある、中断可能なコードの書き方のところって

sub do_some_work {
    ...
    my $len;
    {
        # 処理の開始前に中断要請があったか確認し,
        # あったならreturn
        return if $stop_requested;
        # ブロックする処理を実行
        $len = $sock->read(my $buf, $maxlen);
        if (! defined($len) && $! == Errno::EINTR) {
            # シグナルを受信したのでリトライ
            redo;
        }
    }
    ...
}

ではなく

sub do_some_work {
    ...
    my $len;
    # 処理の開始前に中断要請があったか確認し,
    # あったならreturn
    return if $stop_requested;
    {
        # ブロックする処理を実行
        $len = $sock->read(my $buf, $maxlen);
        if (! defined($len) && $! == Errno::EINTR) {
            # シグナルを受信したのでリトライ
            redo;
        }
    }
    ...
}