マルチスレッドのプログラミング

tgrep の説明

サンプルプログラム tgrep は、grep のマルチスレッドバージョンで、grep(1)find(1) を組み合わせたものです。tgrep は元の grep のオプションを、-w (単語検索) 以外はすべてサポートします。さらに、独自のオプションもあります。

デフォルトでは、tgrep の検索は次のコマンドで実行します。


find . -exec grep [ options ] pattern {} ¥;

大きなディレクトリ構造に対して使用した場合、tgrepfind よりも素早く結果を戻すことができます。ただし、そのスピードは使用できるプロセッサの数に左右されます。単一プロセッサのマシンでは約 2 倍のスピードが得られ、4 個のプロセッサを搭載したマシンでは約 4 倍のスピードが得られます。

-e オプションは、tgrep によるパターン文字列の解釈を変更します。-e オプションを指定しなければ、単純な (リテラルな) 文字列検索が行われます。-e オプションを指定すると、スレッドに対して安全なパブリックドメインバージョンの正規表現ハンドラが使用されます。この正規表現を使用した場合は、検索が遅くなります。

-B オプションは、TGLIMIT という環境変数の値によって検索に使用するスレッドの数を制限するよう tgrep に指示します。TGLIMIT が設定されていない場合は、このオプションは機能しません。tgrep では多くのシステムリソースが使われる可能性があるので、タイムシェアリングシステムで使用する場合は、このオプションを指定します。