コンテキスト:
Unityコルーチンは、Articleに従ってマルチスレッド化されていません。したがって、コルーチンコールバックがグローバル変数にアクセスしている場合は、スレッドの競合がないと想定します。コルーチンコールバックはスレッドセーフですか?
例:
//Declaration
private IEnumerator Resolve(WWW request, Action<WWW> callback)
{
while (!request.isDone)
{
yield return null;
}
callback(request);
}
//Invocation - called constantly
StartCoroutine(Resolve(request, request => {GlobalVar = request.text;}));
できコルーチンが実際に同期しているかGlobalVar
は、スレッドセーフであるこの確認を経験した人?
すべては定義スレッドセーフで、あなただけの1スレッドとスレッドの競合を持つことはできませんされ遭遇することはできません。 – Felype
https://docs.unity3d.com/uploads/Main/monobehaviour_flowchart.svgの-Game Logic-セクションを確認してください。 Coroutinesとyieldには、Game Loopsで呼び出される特定の時間があります。[Gameループは常に単一のスレッドです。私はそれに例外がないことを知っている] –