D 2.0
About Japanese Translation

Last update Thu Sep 16 11:25:56 2010

std.concurrency

これは低水準のメッセージ送受信APIで、この上に、より構造化あるいは制限された API を構築して使うことを目的としたものです。 基本コンセプトは、 メッセージのやりとりが可能な対象は全て共通のハンドル型 (この実装では Cid) で表現され、 これによって、メッセージを同一プロセス内のスレッドや、同一ホスト上のプロセス、 外部ホストのプロセスに同じインターフェイスで送ることができます。 これによって、 ほとんどあるいは全く実装を変更せずにプログラムを多数のマシンに分散させることが可能となり、 スケーラビリティの面で重要な特徴となります。

ただし現時点では同一プロセス内のスレッド間通信のみがサポートされ、 より特殊化されたハンドル Tid によって走査するようになっています。 これは、実質的に Cid のサブクラスで、プロセス内通信に特有の機能を追加しています。

Source:
std/concurrency.d

License:
Boost License 1.0.

Authors:
Sean Kelly

class MessageMismatch: object.Exception;

class OwnerTerminated: object.Exception;

class LinkTerminated: object.Exception;

class PriorityMessageException: object.Exception;

class MailboxFull: object.Exception;

struct Tid;
論理プロセスを表現する、詳細を隠蔽した型です。

Tid thisTid();
呼び出し元の Tid を返します。

Tid spawn(T...)(void function(T) fn, T args);
新しい並行コンテキストで指定の関数を実行し、その Tid 返します。 呼び出しコンテキストは、新しいコンテキストの所有者となります。 所有者が終了した場合、OwnerTerminated メッセージが新コンテキストに送信され、 receive() 時に OwnerTerminated 例外が飛びます。

Parameters:
fn 実行したい関数
args 関数への引数

Returns:
新しいコンテキストを表す Tid

Tid spawnLinked(T...)(void function(T) fn, T args);
新しい並行コンテキストで指定の関数を実行し、その Tid 返します。 新しいコンテキストと呼び出しコンテキストは「リンク」されます。 この時、一方が終了すると LinkTerminated メッセージが他方に送信され、 receive() 時に LinkTerminated 例外が飛びます。 これに加えて、spawn() の時の関係も保持されます。 したがって、リンク関係が壊れたときは、 所有者の終了は、新コンテキストでの receive() 時の OwnerTerminated 例外として通知されます。

Parameters:
fn 実行したい関数
args 関数への引数

Returns:
新しいコンテキストを表す Tid

void send(T...)(Tid tid, T vals);
与えられた値を tid の指すコンテキストに送信します。

void prioritySend(T...)(Tid tid, T vals);

void receive(T...)(T ops);

receiveOnlyRet!(T) receiveOnly(T...)();

bool receiveTimeout(T...)(long ms, T ops);

enum OnCrowding;
メールボックスが満タンな時の挙動指定

block
空きができるまで待つ

throwException
MailboxFull 例外を投げる

ignore
送信を止めてreturn

void setMaxMailboxSize(Tid tid, size_t messages, OnCrowding doThis);
メールボックスに保持可能なメッセージ数の最大値を指定します。 満タン時にメッセージが送られてきたときは doThis に従って処理されます。 messages が 0 ならば、上限の制限をなくします。

Parameters:
Tid tid 上限を指定したいスレッドの Tid
size_t messages 受け取るメッセージの上限、または無制限にしたいときは 0
OnCrowding doThis メールボックスが満タンな時の挙動

void setMaxMailboxSize(Tid tid, size_t messages, bool function(Tid) onCrowdingDoThis);
メールボックスに保持可能なメッセージ数の最大値を指定します。 満タン時にメッセージが送られてきたときは onCrowdingDoThis を呼び出します。messages が 0 ならば、上限の制限をなくします。

Parameters:
Tid tid 上限を指定したいスレッドの Tid
size_t messages 受け取るメッセージの上限、または無制限にしたいときは 0
bool function(Tid) onCrowdingDoThis メールボックスが満タンな時に呼び出したいルーチン

struct List(T);