class TJQueue
メッセージキュー
文書
メッセージキュー.このクラスでは、メッセージとは長さの指定されたバイトの配列の事と 考える。 メッセージを蓄えるバッファのことをキューと呼び、キューに対する操作は,
* 1. send() - メッセージ送信 * 2. receive() - メッセージ受信 *の2つである. メッセージは送信依頼の順序でキューに蓄えられる。 メッセージ受信時、キューから送信依頼の順序で読み出され、 読み出されたメッセージはキューから削除する。 キューは本クラスのオブジェクト生成時に指定された固定サイズであり 伸縮しない。 また、キューのバッファ領域はキューオブジェクト内に独自に確保しており、 メッセージ送信の依頼を受けた本オブジェクトは、メッセージをキューバッファに メモリコピーする。受信依頼時はキューから指定されたメッセージエリアに メモリコピーする。よって、メッセージ送信・受信依頼側はこのキューオブジェクトとは別に メッセージエリアの確保・解放を自身で行う必要がある。
また,メッセージの送信・受信は単純なメモリコピーであるため, メッセージはPOD型(ISO C++ section 3.9)のオブジェクトしかサポート しない.すなわち,memcpy() によってコピーが保証できるデータ型しか キューを介して送ることはできない.virtual メソッドを持つ class の オブジェクトなどは,そのポインタを送受信することで仮想的な振舞を させることができる.
■スレッドのブロックについて メッセージ受信時、キューにメッセージが1つも存在しない場合、 receive() はブロックする。この状態でメッセージ送信依頼があった場合、 受信でブロック中の receive() が復帰する。 尚、キューにメッセージが存在する場合、ブロックせず即復帰する。
メッセージ送信時、キューに空きが無い場合(キューのコンストラクタで 指定された最大数のメッセージがすでに蓄積されている場合)のみ ブロックする。キューに空きがある場合、ブロックせず即復帰する。
- TJQueue(int maxmsgs, int maxmsglen)
-
TJQueue オブジェクトを生成する.
- パラメータ:
- maxmsgs - 最大メッセージ数
maxmsglen - 最大メッセージ長
- virtual ~TJQueue()
- TJQueue オブジェクトを消去する
- virtual void send(const void* msg, int length)
- メッセージを送信する.
- パラメータ:
- msg - 送信メッセージのアドレス
length - 送信メッセージのバイト数
- virtual int receive(void* msgbuf, int bufsize)
- メッセージを受信する.
- パラメータ:
- msgbuf - 受信メッセージバッファのアドレス
bufsize - 受信メッセージバッファのバイト数
- 子クラスは存在しません
- 作者 :
- Susumu TOKUI @date 1998,6/1
索引(アルファベット順) HTMLクラス継承 または Java
This page was generated with the help of DOC++.