 | | WideStudio/MWT Class Reference
| |
クラスの型
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 | |