Skip to content

ES CSharp Concurrency

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Hilos, tareas y sincronización.

Manual C# · Ejemplos UO

La asincronía le permite esperar, la concurrencia le permite realizar varios trabajos y el paralelismo le permite realizarlos simultáneamente. Task.Run adecuado para trabajos computacionales; por sí solo no hace que los objetos del juego sean seguros para subprocesos. UI y el mundo del juego deben ser atendidos por el host API proporcionado.

Ejemplo sencillo (Example.cs)

Guarde este ejemplo por separado como Example.cs. Ejecútelo independientemente de los demás ejemplos de esta página.

Example.cs:

// PROJECT-EXAMPLE
int count = 0;
System.Threading.Tasks.Parallel.For(0, 3, _ => System.Threading.Interlocked.Increment(ref count));
System.Console.WriteLine(count);

Resultado:

3
int total = await Task.Run(() => Enumerable.Range(1, 100).Sum(), Cancellation);
UO.Print(total.ToString());
using System.Collections.Concurrent;
var values = new ConcurrentDictionary<string, int>();
values.TryAdd("items", 1);
values.AddOrUpdate("items", 1, (_, old) => old + 1);
UO.Print(values["items"].ToString());

lock protege la sección sincrónica, SemaphoreSlim.WaitAsync - espera de acceso asíncrona, Interlocked - operaciones atómicas individuales. No mantenga un bloqueo durante un trabajo externo prolongado y no ejecute tareas olvidadas accediendo a la sesión después de que se haya completado el script.

Documentación oficial: Subprocesos, tareas y sincronización - Microsoft Learn.

Clone this wiki locally