Build TOP Environments

開発者向け

C言語インタフェース

バージョン番号
設定関連
リーダーライターロック
名前付ミューテックス
名前付条件変数

C++言語インタフェース

FlShmクラス
FLRwlRcsvクラス


C言語インタフェース

C言語用のインタフェースです。   開発時には、以下をインクルードしてください。

#include <fullock/fullock.h>

リンク時には以下をオプションとして指定してください。

-lfullock

バージョン番号

書式

説明

引数

返り値

なし。


設定関連

書式

説明

返り値

成功すれば true を返します。失敗した場合には false を返します。

注意

環境変数 FLCKAUTOINIT に NO を設定し、再アタッチする場合と同じですが、fullock_reinitialize および fullock_reinitialize_ex 以外の関数により設定された値は、その時点で反映されるわけではありません。各関数を呼び出し、値を設定した後で、fullock_reinitialize もしくは fullock_reinitialize_ex を呼び出すことで、共有メモリファイルへ再アタッチされます。 もし、再アタッチの時点で、ファイルが存在し、他プロセスがアタッチ中であれば、設定された値を無視して再アタッチのみが行われます。 ファイルが存在しない場合にはファイルが新たに作成されます。またファイルが存在しているが、アタッチしているプロセスが存在しない場合には、ファイルは再初期化されます。 fullock_reinitialize および fullock_reinitialize_ex を呼び出した時点でアタッチしていたファイルはデタッチのみされます。


リーダライターロック

書式

説明

引数

返り値

注意

fullock_rwlock は、pthread_rwlockとは異なり、ファイルディスクリプタを必須の引数として要求し、ファイルに対してリーダライターロックの機能を提供しています。これは、fcntlの代替としての機能と考えてください。

もし、ファイルディスクリプタに関連しないリーダーライターロックとしてfullock_rwlockを利用する場合には、fd引数には FLCK_RWLOCK_NO_FDマクロを使って擬似fdを作成し、関数を呼び出してください。ファイルディスクリプタの代わりに、FLCK_RWLOCK_NO_FDマクロに指定するint値により、ロック対象が区別されます。


名前付ミューテックス

書式

説明

引数

返り値

ロックの取得、開放に成功した場合には0を返します。取得できない、開放できない場合にはエラー番号を返します。

注意

特になし。


名前付条件変数

書式

説明

引数

返り値

処理が成功した場合には0を返します。それ以外の場合には、エラー番号を返します。

注意

特になし。


C++言語インタフェース

C++言語用のインタフェースです。   開発時には、必要に応じて以下をインクルードしてください。

#include <fullock/flckshm.h>
#include <fullock/rwlockrcsv.h>

リンク時には以下をオプションとして指定してください。

-lfullock

FlShmクラス

リーダライターロックおよび名前付ミューテックスの操作クラスです。

以下は、利用できるメソッドの一覧です。

メソッド

説明

引数

返り値

注意

C言語インターフェースに対応しています。

リーダライタロックをファイルディスクリプタに関連せず利用する場合には、FLCK_RWLOCK_NO_FD マクロを利用して擬似fdを生成し、指定してください。(C言語インターフェースの fullock_rwlock の説明を参照してください。)


FLRwlRcsvクラス

FULLOCKの提供するリーダライターロックをラップし、同一スレッドによる再帰ロックを可能とする操作クラスです。
以下は、利用できるメソッドの一覧です。

メソッド

説明

引数

返り値

ロックの取得、開放に成功した場合にはtrueを返します。取得できない、開放できない場合にはfalseを返します。

注意

このクラスは、FULLOCKのリーダライターロックをラップし、同一スレッドによる再帰ロックを可能とする操作クラスであり、同一ファイルディスクリプタ、オフセット、領域長に対して、同一スレッドからロックを取得してもブロックしません。
例えば、リーダロックを取得したスレッドで、本クラスの別インスタンスを作り、同領域に対してライターロックを取得することが可能です。
また、本クラスのオブジェクトは自動ロック解除を行いますので、Unlockを呼び出さずオブジェクトを破棄しても自動的にロックを解除します。
この利用方法としては、C/C++言語におけるスコープ内でオート変数として本クラスオブジェクトを定義するだけで、スコープ内で安全にロック/ロック開放ができることを意味しています。

Build TOP Environments