UE Unreal Engine C++ スレッド ロック、スコープ ロック

UE で最も一般的に使用されるスレッド ロックは FCriticalSection + FScopeLock です。

FCriticalSection はロック オブジェクトです。

FScopeLock は、ロックのスコープ オブジェクトです。

説明書

1. ロックオブジェクトを定義する

FCriticalSection RefreshMutex;

FCriticalSection ロック オブジェクトを定義します。これはグローバルまたはクラス変数であり、実際の状況に応じて使用されます。保証する必要がある唯一のことは、同期する必要があるコードが同じロックを使用する必要があるということです。

2. 役割ロックを使用する

// 不同步代码
{
    FScopeLock RefreshLock(&RefreshMutex);
    // 同步的代码
}
// 不同步代码

単純に理解すると、FScopeLock コンストラクターが RefreshMutex をロックするため、他のスレッドが一時的に RefreshMutex ロックを使用すると、FScopeLock はコンストラクター内で何度も待機することになります。

FScopeLock が破棄されると、つまりスコープが終了すると、RefreshMutex ロックが自動的に解放され、他のスレッドの待機中のオブジェクトが実行されます。

要約する

FCriticalSection + FScopeLock は、UE によってカプセル化された非常に単純なロックです。

C++ のスコープ、構築、および破棄を明確に理解していれば、C++ をうまく使用できます。

おすすめ

転載: blog.csdn.net/wmy19890322/article/details/132079089