通常、スレッドセーフな関数を作成したいときは、共有データをロックし、作業が終了したら解放します。C:この関数をスレッドセーフにするには?
ここで私はグローバル変数を扱っています。ロックとロック解除だけでは、関数が一意の値を返すことはありません。次の関数をスレッドセーフに変更し、常に一意の整数を返すようにするにはどうすればよいですか?
int count = 0;
int GetUnique()
{
count = count + 1;
return count;
}
ローカル静的変数を関数内に記述する人がいますか?どのように、なぜこれが機能するのですか?
この関数は 'count'を返す必要はありません。 'int local_count;ロック();カウント=カウント+ 1; local_count = count; unlock(); return local_count; '? –
@iharob - ロック/アンロックは過度であり、CPUはロックを一切持たずにこの正確なユースケースを処理するための具体的な指示を持っています。 – Geoffrey
@Geoffrey私はこれが宿題のように見えるか、そうでないと思われるので、これが必要であると仮定しています。 –