Skip to content.

Sections
Personal tools
You are here: Home » ダウンロード » ThreadJack用 » doc » TJQueue

Document Actions

class TJQueue

メッセージキュー

Public メソッド

[more]TJQueue(int maxmsgs, int maxmsglen)
TJQueue オブジェクトを生成する
[more]virtual ~TJQueue()
TJQueue オブジェクトを消去する
[more]virtual void send(const void* msg, int length)
メッセージを送信する
[more]virtual int receive(void* msgbuf, int bufsize)
メッセージを受信する

文書

メッセージキュー.

このクラスでは、メッセージとは長さの指定されたバイトの配列の事と 考える。 メッセージを蓄えるバッファのことをキューと呼び、キューに対する操作は,

 *       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++.