関数内でのstaticキーワードの適切な使用法は、次のようになると思いました。
void threadSafeWrite(int *array, int writeIndex, int writeData){
static void *threadLock = Lock_create(); //in my code locks are void* to be cross-platform compatable
Lock_aquire(threadLock);
array[writeIndex] = writeData;
Lock_release(threadLock);
}
要するに、それはクリティカルセクションを作る良い方法のように思えます。私の質問は、スレッドセーフな方法でthreadLockを初期化するにはどうすればよいですか?私が恐れている例の問題は、ロックが複数回割り当てられ、各スレッドが異なるロックを使用することです。これを修正する方法について何かアイデアはありますか?鶏が先か卵が先かという問題のようです。pthreadとwindowsスレッドの両方で機能する1つまたは複数のソリューションが必要です。
編集:この機能が必要な理由は、シングルスレッドまたはマルチスレッド(デバッグ目的)のコードを実行するときに違いがあるかどうかをテストするための邪魔にならない方法を提供するためです。