WideStudio/MWT Class Reference

WideStudio/MWT Home
Up to


クラスの型

WSDsemaphore

メソッド関数仕様



getNewInstance() 関数の説明

書式
WSDsemaphore* WSDsemaphore::getNewInstance()
機能
WSDsemaphore インスタンスを取得します。 WSDsemaphore インスタンスは、new 演算子で生成せず、 この getNewInstance() メンバ関数で生成します。
処理
引数
なし。
返値
WSDsemaphore インスタンスへのポインタ
注意
この関数はスタティック関数です。
サンプル
initialize() を参照してください。



initialize 関数の説明

書式
long initialize()
機能
セマフォを初期化します。 使用前に、一度初期化を行なって下さい。
処理
引数
なし。
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
サンプル
メインスレッドとサブスレッドにおいて 同期処理を行なう例です。
WSDsemaphore* sem = NULL;
void* thread_proc(WSDsemaphore* thr,void* data){
  sem->lock(); //同期待ち

  //スレッドで処理...
  return NULL;
}
void sample_event_procedure(WSCbase* object){
  //排他を行なうためのセマフォを生成
  sem = WSDsemaphore::getNewInstance();
  sem->initialize();
  sem->lock();

  //スレッドインスタンスを生成
  WSDthread* thr = WSDthread::getNewInstance();

  //スレッドとして起動する関数を設定。
  thr->setFunction(thread_proc);

  //スレッドを生成
  thr->createThread(NULL);

  // セマフォを解除し同期待ちしているスレッドを起こす
  sem->unlock();
}



lock 関数の説明

書式
long lock()
機能
セマフォをロックします。
処理
引数
なし。
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
サンプル
initialize() を参照してください。



unlock 関数の説明

書式
long unlock()
機能
セマフォを解除します。
処理
引数
なし。
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
サンプル
initialize() を参照してください。



setPrivate 関数の説明

書式
long setPrivate(WSCbool fl)
機能
プロセス共有型のセマフォか、プライベートなセマフォかを 指定します。 デフォルト値は、True(プライベート型)です。
処理
引数
(in)WSCbool fl True=プライベート型 False=共有型
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
initialize() が呼び出される前に呼び出す必要があります。
サンプル
プロセス共有型のセマフォを使用する例です。
void* thread_proc(WSDsemaphore* thr,void* data){
  WSDsemaphore* sem = NULL;
  //排他を行なうためのセマフォを生成
  sem = WSDsemaphore::getNewInstance();
  //共有のための識別キーを指定
  sem->setKey("/tmp/file1:1234");
  //共有であることを指定
  sem->setPrivate(False);
  //共有セマフォの参照であることを指定
  sem->setOwner(False);
  sem->initialize();

  sem->lock(); //同期待ち

  //スレッドで処理...
  return NULL;
}
void sample_event_procedure(WSCbase* object){
  WSDsemaphore* sem = NULL;
  //排他を行なうためのセマフォを生成
  sem = WSDsemaphore::getNewInstance();
  //共有のための識別キーを指定
  sem->setKey("/tmp/file1:1234");
  //共有であることを指定
  sem->setPrivate(False);
  //共有セマフォの持ち主であることを指定
  sem->setOwner(True);
  sem->initialize();
  sem->lock();

  //スレッドインスタンスを生成
  WSDthread* thr = WSDthread::getNewInstance();

  //スレッドとして起動する関数を設定。
  thr->setFunction(thread_proc);

  //スレッドを生成
  thr->createThread(NULL);

  // セマフォを解除し同期待ちしているスレッドを起こす
  sem->unlock();
}



getPrivate 関数の説明

書式
WSCbool getPrivate()
機能
プライベートなセマフォか否かを取得します。
処理
引数
なし。
返値
True= プライベート型、False= 共有型
注意
サンプル



setOwner 関数の説明

書式
long setOwner(WSCbool fl)
機能
プロセス共有型のセマフォにおいて、その所有者か、 参照者かを指定します。 デフォルト値は、True(所有者)です。
処理
引数
(in)WSCbool fl True=所有者 False=参照者
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
initialize() が呼び出される前に呼び出す必要があります。
サンプル
setPrivate() を参照してください。



getOwner 関数の説明

書式
WSCbool getOwner()
機能
共有型セマフォの所有者か否かを取得します。
処理
引数
なし。
返値
True= 所有者、False= 参照者
注意
サンプル



setKey 関数の説明

書式
long setKey(char* key)
機能
プロセス共有型のセマフォにおいて、セマフォを特定するキーとなる 文字列を指定します。
処理
引数
(in)char* key セマフォを特定するキーとなる文字列
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
initialize() が呼び出される前に呼び出す必要があります。 UNIX系、Linux系のシステムでは、ftok() 関数に引き渡される 実際に存在するファイル名と整数値を"ファイル名:整数値"の形で 指定します。
サンプル
setPrivate() を参照してください。



getKey 関数の説明

書式
char* getKey()
機能
共有型セマフォを特定するキーとなる文字列を取得します。
処理
引数
なし。
返値
キー文字列
注意
サンプル


Document Release 3.98

For Use with WideStudio/MWT Release 3.98, Summer 2008


WideStudio/MWT Home | Up to

Copyright(C) WideStudio/MWT Development Team, 1999-2008 Last modified: June 25, 2008