Visit Mozilla.org

nsIThread

出典: MDC

この記事は Firefox 3 の新機能について述べています

nsIThread インタフェースは、オペレーティングシステム (OS) のスレッドに対する高レベルの抽象化を提供します。スレッドには組み込みのキューが含まれており、スレッドは、そのスレッド上で処理される nsIRunnable オブジェクト (イベント) を取得できるイベントターゲットと言えます。

スレッドを作成するには、nsIThreadManager インタフェースを使います。

継承元: nsIEventTarget

目次

nsIThreadxpcom/threads/nsIThread.idl で定義されています。これは scriptable非凍結です。 (Mozilla 1.9から更新されていません)

[編集] メソッドの概要

void shutdown()
boolean hasPendingEvents()
boolean processNextEvent(in boolean mayWait)

[編集] 属性

属性 説明
PRThread PRThread nsIThread に相当する NSPR スレッドオブジェクト。読み取り専用。

[編集] メソッド

[編集] shutdown()

スレッドを停止します。これは、そのスレッドに割り当てられているイベントを中止し、スレッドが現在のスレッドに加わる前に、待機中のイベントがある場合はそれらを実行して完了させます (詳しくは PR_JoinThread() を参照してください)。このメソッド呼び出しの実行中、現在のスレッドに割り当てられたイベントは処理が継続されます。

警告: このメソッドは、スレッド自体から呼び出すことができません。その代わり、他のスレッド (通常、呼び出したいスレッドの作成元であるスレッド、もしくはメインのアプリケーションスレッド) から呼び出す必要があります。この関数が返されると、スレッドは停止され、以後イベントを受け付けることはできなくなります。
void shutdown()
[編集] 引数

なし。

[編集] 投げられる例外
NS_ERROR_UNEXPECTED
shutdown() が、スレッド自体から誤って呼び出された場合。そのスレッドがスレッドマネージャの newThread() メソッドを使って作成されたものではない場合。あるいはスレッドがすでに停止処理中である場合。

[編集] hasPendingEvents()

処理待機中のイベントがそのスレッドに存在するかどうかを判別します。

註: このメソッドは、他のスレッドからではなく、スレッド自体から呼び出す必要があります。
boolean hasPendingEvents()
[編集] 引数

なし。

[編集] 戻り値

関数が呼び出された時点で待機中のイベントが存在する場合は true。なお、false が返ってきた場合でも、現在のスレッドに他のスレッドがイベントを追加できるため、このメソッドが返るまでにイベントキューが空ではなくなる可能性があります。

[編集] 投げられる例外
NS_ERROR_UNEXPECTED
このスレッドが現在のスレッドではないときにこのメソッドが呼び出された場合。

[編集] processNextEvent()

次に待機中のイベントを処理します。待機中のイベントが存在しない場合、mayWait 引数の値によっては、新しいイベントがスレッドに割り当てられるまで待機状態となります。

このメソッドは再入可能ですが、このスレッドが現在のスレッドである場合のみ呼び出されます。

boolean processNextEvent(
  in boolean mayWait
)
[編集] 引数
mayWait
true の場合、イベントキューが空であるときは、新しいイベントが処理可能になるまで待機します。false の場合、イベントキューが空であるときは即座に返ります。
[編集] 戻り値

イベントが処理中であった場合は true、待機中のイベントが存在しない場合は false

[編集] 投げられる例外
NS_ERROR_UNEXPECTED
このスレッドが現在のスレッドではないときにこのメソッドが呼び出された場合。

[編集] 関連記事