UE で最も一般的に使用されるスレッド ロックは FCriticalSection + FScopeLock です。
FCriticalSection はロック オブジェクトです。
FScopeLock は、ロックのスコープ オブジェクトです。
説明書
1. ロックオブジェクトを定義する
FCriticalSection RefreshMutex;
FCriticalSection ロック オブジェクトを定義します。これはグローバルまたはクラス変数であり、実際の状況に応じて使用されます。保証する必要がある唯一のことは、同期する必要があるコードが同じロックを使用する必要があるということです。
2. 役割ロックを使用する
// 不同步代码
{
FScopeLock RefreshLock(&RefreshMutex);
// 同步的代码
}
// 不同步代码
単純に理解すると、FScopeLock コンストラクターが RefreshMutex をロックするため、他のスレッドが一時的に RefreshMutex ロックを使用すると、FScopeLock はコンストラクター内で何度も待機することになります。
FScopeLock が破棄されると、つまりスコープが終了すると、RefreshMutex ロックが自動的に解放され、他のスレッドの待機中のオブジェクトが実行されます。
要約する
FCriticalSection + FScopeLock は、UE によってカプセル化された非常に単純なロックです。
C++ のスコープ、構築、および破棄を明確に理解していれば、C++ をうまく使用できます。