現在、WIN32 用に作成されたマルチスレッド ライブラリを Android/Linux に移植しようとしていますが、WIN32 ミューテックスが持つ特定の機能をマップしようとして少し問題が発生したようです。
Windows Mutex オブジェクトのドキュメントから:
他のプロセスのスレッドは、CreateMutex の呼び出しでオブジェクト名を指定することにより、既存のミューテックス オブジェクトへのハンドルを開くことができます。その名前のミューテックス オブジェクトが既に存在する場合、GetLastError は ERROR_ALREADY_EXISTS を返します。
Linux の man ページで、Windows API が提供するものと同様の情報を見つけることができませんでした。
この質問をする主な理由は、移植しているミューテックス作成コードに次のものが含まれているためです。
isCreator = !(::GetLastError() == ERROR_ALREADY_EXISTS);
はisCreator
ブール データ型です。(何に使われるかはわかりませんが、重要だと思います)。
編集:
mutex = PTHREAD_MUTEX_INITIALIZER;
// attributes??
if (pthread_mutex_init(&mutex, NULL) != 0) {
throw Nv_EXCEPTION(XCPT_ResourceAllocationFailure, GetLastError());
}