7.4 組み込みモジュール thread

 

このモジュールは複数のスレッド(いわゆるライトウエイトプロセス または タスク)を扱うための基本関数を提供します。つまりグローバルデータスペースを共有する複数のスレッドを扱います。同期のために単純なロック(いわゆる ミューテックスまたはバイナリセマフォ)が提供されています。     

このモジュールはオプションです。これはWindows NTと'95、SGI、IRIX、Solaris 2.x、 およびPOSIXスレッド(いわゆる``pthread'')を実装しているシステムでサポートされています。   

以下の定数と関数を定義しています。

error
スレッド固有のエラーで発生します。

start_new_thread (func, arg)
新しいスレッドを開始します。そのスレッドは関数funcを引数リスト arg(タプルでなければなりません)で実行します。関数がリターンしたときは そのスレッドは黙って終了します。関数が処理されなかった例外で終了すると、 スタックトレースが表示され、そのスレッドは終了します(しかし他のスレッドは 走り続けます)。

exit ()
これはexit_thread()に対する簡略形です。

exit_thread ()
SystemExit例外を発生させます。これがキャッチされない場合は、 そのスレッドは黙って終了させられます。

allocate_lock ()
新しいロックオブジェクトを返します。ロックのメソッドは以下に記述されています。 ロックは初めはロックされていません。

get_ident ()
現在のスレッドの'スレッド識別子'を返します。これは0でない整数です。 この値は直接的な意味を持ってはいません。つまりこれはスレッド固有データの 辞書をインデックスするため等に使われるマジッククッキーのようなものです。 スレッド識別子はスレッドが終了し他のスレッドが生成されたときに再利用される かもしれません。

ロックオブジェクトは以下のメソッドを持っています。

acquire ([waitflag])
オプションの引数がなければ、このメソッドはロックを無条件に取得します。 そのロックが他のスレッドによって開放されるまで待つ必要があれば (一度にひとつのスレッドのみがロックを取得できます。これがロックの存在理由です)、Noneを返します。整数のwaitflag引数があれば、動作はその値に 依存します。つまり、0の場合は、待たずにすぐ取得できれるときのみロックは取得 され、0以外の場合は、前のように無条件にロックは取得されます。 引数があれば、ロックの取得に成功すると戻り値は1になり、失敗すると 0になります。

release ()
ロックを開放します。そのロックは既に取得されたものでなければなりませんが、 同じスレッドで取得されたものである必要はありません。

locked ()
ロックの状態を返します。同じスレッドで取得されたものであれば1、 そうでなければ0です。

警告:

guido@python.org