core.thread.threadbase
- class
ThreadException
: object.Exception; - スレッド例外の基底クラス。
- class
ThreadError
: object.Error; - 割り当てが利用できないときにGC内部の関数に使用されるスレッドエラーの基本クラス。
- abstract class
ThreadBase
; -
- pure nothrow @nogc @safe this(void function()
fn
, size_tsz
= 0); - package nothrow @nogc bool
destructBeforeDtor
(); - このオブジェクトによって使用された残りのリソースをクリーンアップする。
- abstract Throwable
join
(boolrethrow
= true); - このスレッドが完了するのを待つ。 スレッドが未処理の例外の結果として終了した場合 未処理の例外の結果としてスレッドが終了した場合、この例外は再投げされる。Parameters:
bool rethrow
このスレッドが終了する原因となった未処理の例外をすべて投げ直す。 を投げ直す。 Throws:操作に失敗した場合はThreadException。 結合スレッドで処理されなかった例外。Returns:rethrow = falseの場合はこのスレッドで処理されない例外、そうでない場合はNULL そうでなければ - final @nogc @property @safe ThreadID
id
(); - このスレッドのOS識別子を取得する。Returns:スレッドがまだ開始されていない場合は ThreadID.init. そうでなければ、WindowsではGetCurrentThreadId の結果を返す、 POSIXではpthread_self 。 この値は現在のプロセスで一意である。
- final @nogc @property @safe string
name
(); - このスレッドのユーザが読めるラベルを取得する。Returns:このスレッドの名前。
- final @nogc @property @safe void
name
(stringval
); - このスレッドのユーザが読めるラベルを設定する。Parameters:
string val
このスレッドの新しい名前。 - final @nogc @property @safe bool
isDaemon
(); - このスレッドのデーモン・ステータスを取得する。 ランタイムは ランタイムは、プロセスを終了する前にすべての通常のスレッドが完了するのを待つが、デーモンスレッド スレッドは事実上無視されるので、プロセスの終了を妨げない。 の終了を妨げない。 事実上、デーモン・スレッドは、プロセスが終了するときにOSによって自動的に終了される。 される。Returns:デーモン・スレッドの場合はtrueを指定する。
- final @nogc @property @safe void
isDaemon
(boolval
); - このスレッドのデーモン・ステータスを設定する。 ランタイムは ランタイムは、プロセスを終了する前にすべての通常のスレッドが完了するのを待つが、デーモンスレッド スレッドは事実上無視されるため、プロセスの終了を妨げない。 の終了を妨げない。 事実上、デーモン・スレッドは、プロセスが終了するときにOSによって自動的に終了される。 される。Parameters:
bool val
このスレッドの新しいデーモン状態。 - final nothrow @nogc @property bool
isMainThread
(); - このスレッドがメイン・スレッドであるかどうかをテストする。 ランタイムを初期化したReturns:スレッドがメインスレッドの場合、trueを返す
- nothrow @nogc @property bool
isRunning
(); - このスレッドが実行中かどうかをテストする。Returns:スレッドが実行中であればtrue、実行中でなければfalseを返す。
- static nothrow @nogc @safe ThreadBase
getThis
(); - 呼び出し元のスレッドへの参照を提供する。Returns:呼び出しスレッドを表すスレッド・オブジェクト。 このオブジェクトを削除した結果は このオブジェクトを削除した結果は未定義である。 現在のスレッドが ランタイムにアタッチされていない場合は、NULL参照が返される。
- static ThreadBase[]
getAll
(); - 現在システムによって追跡されているすべてのスレッドのリストを提供する。 返された配列内のスレッドは、もはや実行されていないかもしれないことに注意すること ( ThreadBase.isRunning).Returns:現在システムが追跡しているすべてのスレッドへの参照を含む配列。 への参照を含む配列。 含まれる オブジェクトを削除した結果は未定義である。
- static int
opApply
(scope int delegate(ref ThreadBase)dg
); - 現在システムによって追跡されているすべてのスレッドを操作する。 含まれる スレッド・オブジェクトを削除した結果は未定義である。 コールバックに渡されたスレッドは、もはや実行されないかもしれないことに注意すること ( ThreadBase.isRunning).Parameters:
int delegate(ref ThreadBase) dg
デリゲートとして提供されたコード。 Returns:すべてのエレメントを訪問した場合はゼロ、そうでない場合はゼロでない。 - package pure nothrow @nogc @safe this(size_t
sz
= 0); - package static nothrow @nogc void
setThis
(ThreadBaset
); - package(core.thread) final nothrow @nogc void
pushContext
(StackContext*c
); - package(core.thread) static nothrow @nogc @property Mutex
slock
(); - package(core.thread) static nothrow @nogc void
add
(StackContext*c
); - package static nothrow @nogc void
incrementAboutToStart
(ThreadBaset
);
- nothrow @nogc void
thread_term_tpl
(ThreadT, MainThreadStore)(ref MainThreadStore_mainThreadStore
); - スレッド・モジュールを終了する。その後に他のスレッドルーチンを呼んではならない。 を呼び出すことはできない。
- nothrow @nogc bool
thread_isMainThread
(); - ThreadT
thread_attachThis_tpl
(ThreadT)(); - Dランタイムで使用するために呼び出しスレッドを登録する。 このルーチンが が呼び出された場合、何も実行されない。
注釈: このルーチンは、呼び出されてもスレッドローカル静的コンストラクタを実行しない。 このルーチンは、呼び出されてもスレッドローカルの静的コンストラクタを実行しない。 Dスレッドとしての完全な機能が必要な場合、以下の関数が呼ばれなければならない。 を呼び出す必要がある:
extern (C) void rt_moduleTlsCtor(); - nothrow @nogc void
thread_detachThis
(); - 呼び出し元のスレッドをランタイムに登録しない。 このルーチンが が呼び出された場合、結果は未定義である。
注釈: このルーチンは、スレッドローカルを実行しない。 このルーチンは、呼び出されたときにスレッドローカルの静的デストラクタを実行しない。 Dスレッドとしての完全な機能が必要な場合は、以下の関数を呼び出す必要がある。 を thread_detachThis の前に呼ばなければならない。 特に、スレッドがプログラム終了前の不確定な時点で切り離される場合は、以下の関数を thread_detachThis の前に呼び出す必要がある:
extern(C) void rt_moduleTlsDtor();See Also: - void
thread_detachByAddr
(ThreadIDaddr
);
nothrow @nogc voidthread_detachInstance
(ThreadBaset
); - 指定されたスレッドをランタイムに登録しない。 このルーチンが が呼び出された場合、結果は未定義である。
注釈: このルーチンは、呼び出されたときにスレッドローカル静的デストラクタを実行しない。 このルーチンは、呼び出されたときにスレッドローカルの静的デストラクタを実行しない。 Dスレッドとしての完全な機能が必要な場合は、以下の関数を呼び出さなければならない。 を呼び出す必要がある。 特に、スレッドがプログラム終了前の不確定な時点で切り離される場合は、切り離されたスレッドによって以下の関数が呼び出されなければならない:
extern(C) void rt_moduleTlsDtor(); - static ThreadBase
thread_findByAddr
(ThreadIDaddr
); - すべてのスレッドのリストから、与えられたスレッド識別子を持つスレッドを探す。Parameters:
ThreadID addr
検索するスレッド識別子。 Returns:スレッド識別子に関連付けられたスレッドオブジェクト。 - nothrow @nogc void
thread_setThis
(ThreadBaset
); - 現在のスレッドを特定の参照に設定する。外部で作成されたスレッド 外部で作成されたスレッド(Cコードなど)を扱う場合にのみ使用する。 この関数の主な用途は、ThreadBase.getThis() が、次のような場面で適切な値を返さなければならない場合である。 が、例えば TLS のデストラクタなどで、適切な値を返さなければならない場合である。つまり つまり、自分が何をしているのかわかっていない限り、この関数には触らないことだ。Parameters:
ThreadBase t
現在のスレッドへの参照。NULLかもしれない。 - void
thread_joinAll
(); - 現在実行中のすべての非デーモンスレッドを結合する。 これは スキャンがデーモンスレッドだけで構成されるまで、スレッドリストを連続的にスキャンする。 デーモンスレッドのみから構成されるまで、スレッドリストを通して連続的なスキャンを実行することによって行われる。
- nothrow void
thread_resumeAll
(); - ガベージコレクションを実行する "stop the world"の呼び出しスレッド以外のすべてのスレッドを再開する。 が実行される。 この"関数"は、各先行スレッドに対して1回ずつ呼び出されなければならない。 スレッドが実際に再開される前に、この関数は thread_suspendAll の呼び出しごとに1回呼び出されなければならない。
その前に このルーチンの前に thread_suspendAll を呼び出す必要がある。
Throws:実行中のスレッドで再開操作に失敗した場合は ThreadError となる。 - enum
ScanType
: int; - thread_scanAllType によって実行されているスキャンの種類を示す。
stack
- スタックやレジスタがスキャンされている。
tls
- TLS データがスキャンされている。
- alias
ScanAllThreadsFn
= void delegate(void*, void*) nothrow;
aliasScanAllThreadsTypeFn
= void delegate(ScanType, void*, void*) nothrow; - スキャン関数。
- nothrow void
thread_scanAllType
(scope ScanAllThreadsTypeFnscan
); - ガベージコレクションのメインエントリーポイント。 提供されたデリゲート には、スタックとレジスタの両方の値を表す範囲が渡される。Parameters:
ScanAllThreadsTypeFn scan
スキャナ関数。 p1からp2 - 1までをスキャンする。 このルーチンの前に このルーチンの前に thread_suspendAll をコールしなければならない。
- nothrow void
thread_scanAll
(scope ScanAllThreadsFnscan
); - ガベージコレクションのメイン・エントリ・ポイント。 提供されたデリゲート には、スタック値とレジスタ値の両方を表す範囲が渡される。Parameters:
ScanAllThreadsFn scan
スキャナ関数。 p1からp2 - 1までをスキャンする。 このルーチンの前に このルーチンの前に thread_suspendAll をコールしなければならない。
- @nogc void
thread_enterCriticalRegion
(); - この呼び出しに続くコードがクリティカル領域であることを示す。この領域にあるコードはすべて この領域にあるコードは、呼び出し元のスレッドが thread_suspendAll の呼び出しによってサスペンドされる前に実行を終了しなければならない。 thread_suspendAll への呼び出しによって中断される前に、この領域内のコードは実行を終了しなければならない。この"関数"は、特に、ロックが使用されていないときにガベージ・コレクタの不変性を維持するためのものである。 を維持するのに役立つ。 クリティカル領域はthread_exitCriticalRegionで抜ける。 警告: クリティカル・リージョンの使用は、非常にエラーを起こしやすい。例えば 例えば、クリティカル領域内でロックを使用すると、ロックを保持している他のスレッドがすでに中断している場合、簡単にデッドロックに陥る可能性がある。 がすでにサスペンドしている場合、デッドロックになりやすい。 クリティカル・リージョン」という用語と概念は、MonoのSGenガベージ・コレクターに由来する。 MonoのSgenガベージ・コレクターに由来する。
クリティカル領域とは 呼び出し元のスレッドはランタイムにアタッチされていなければならない。
- @nogc void
thread_exitCriticalRegion
(); - 呼び出し元のスレッドがもはやクリティカル領域にないことを示す。この この関数を呼び出すと、スレッドは再び中断することができる。
この関数では 呼び出し元のスレッドはランタイムにアタッチされていなければならない。
- @nogc bool
thread_inCriticalRegion
(); - 現在のスレッドがクリティカル領域にある場合はtrueを返し、そうでない場合はfalseを返す。
で 呼び出し元のスレッドはランタイムにアタッチされていなければならない。
- package nothrow @nogc void
onThreadError
(stringmsg
); - コレクション中のDのスレッドエラーに対するコールバック。割り当てができないので 事前に割り当てられた ThreadError が Error インスタンスとして使用される。Returns:は決して返さない。Throws:スレッドエラー。
- enum
IsMarked
: int; - アドレスがGCによってマークされたかどうかを示す。
no
- アドレスがマークされていない。
yes
- アドレスがマークされている。
unknown
- アドレスが GC 2011 によって管理されていない。
- alias
IsMarkedDg
= int delegate(void* addr) nothrow; - isMarked コールバック関数。
- nothrow void
thread_processGCMarks
(scope IsMarkedDgisMarked
); - このルーチンは、ランタイムがGCのためのスレッドごとの特別な処理を処理することを可能にする。 を処理する。 これは、非スキャン・ポインタによって参照されているが、GCによって管理されよ うとしているメモリを考慮するために必要である。 これは、非スキャン・ポインタによって参照されているが、解放されようとしているメモリを考慮するために必要である。 これは現在 は配列のアペンド・キャッシュを意味する。Parameters:
IsMarkedDg isMarked
addr がマークされているかどうかをチェックするために使用される関数である。 このルーチンは、すべてのスレッドを再開する直前に呼び出されなければならない。 このルーチンは、すべてのスレッドを再開する直前に呼び出されなければならない。
- nothrow @nogc void*
thread_stackTop
(); - 呼び出し元のスレッド内で現在アクティブなスタックのスタック・トップを返す。 スレッド内で現在アクティブなスタックのスタックトップを返す。
で 呼び出し元のスレッドはランタイムにアタッチされていなければならない。
Returns:スタックトップのアドレス。 - nothrow @nogc void*
thread_stackBottom
(); - 呼び出し元のスレッド内で現在アクティブなスタックのスタックトップを返す。 を返す。
呼び出し元スレッドはランタイムに接続されていなければならない。 呼び出し元スレッドはランタイムにアタッチされていなければならない。
Returns:スタック・ボトムのアドレス。 - package size_t
ll_nThreads
; - package ll_ThreadData*
ll_pThreads
; - package void[mutexClassInstanceSize]
ll_lock
; - package nothrow @nogc @property Mutex
lowlevelLock
(); - package nothrow @nogc void
initLowlevelThreads
(); - package nothrow @nogc void
termLowlevelThreads
(); - package nothrow @nogc void
ll_removeThread
(ThreadIDtid
); - nothrow @nogc bool
findLowLevelThread
(ThreadIDtid
); - createLowLevelThread によってスレッドが作成されたかどうかをチェックする。Parameters:
ThreadID tid
プラットフォーム固有のスレッドID。 Returns:true スレッドが によって作成され、まだ実行されている場合。createLowLevelThread
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku