mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
[+] TEngineServer
[+] TEngineServer
This commit is contained in:
26
Assets/GameScripts/DotNet/Core/Task/Partial/FTask.Factory.cs
Normal file
26
Assets/GameScripts/DotNet/Core/Task/Partial/FTask.Factory.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
|
||||
namespace TEngine
|
||||
{
|
||||
public partial class FTask
|
||||
{
|
||||
public static FTaskCompleted CompletedTask => new();
|
||||
|
||||
public static FTask Run(Func<FTask> factory)
|
||||
{
|
||||
return factory();
|
||||
}
|
||||
|
||||
public static FTask<T> Run<T>(Func<FTask<T>> factory)
|
||||
{
|
||||
return factory();
|
||||
}
|
||||
|
||||
public static FTask<T> FromResult<T>(T value)
|
||||
{
|
||||
var sAwaiter = FTask<T>.Create();
|
||||
sAwaiter.SetResult(value);
|
||||
return sAwaiter;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac04f3959fd37ad48b2bb6bb7ddb4d46
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
29
Assets/GameScripts/DotNet/Core/Task/Partial/FTask.Pool.cs
Normal file
29
Assets/GameScripts/DotNet/Core/Task/Partial/FTask.Pool.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace TEngine
|
||||
{
|
||||
public partial class FTask
|
||||
{
|
||||
[DebuggerHidden]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static FTask Create(bool isFromPool = true)
|
||||
{
|
||||
var task = isFromPool ? Pool<FTask>.Rent() : new FTask();
|
||||
task._isFromPool = isFromPool;
|
||||
return task;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class FTask<T>
|
||||
{
|
||||
[DebuggerHidden]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static FTask<T> Create(bool isFromPool = true)
|
||||
{
|
||||
var task = isFromPool ? Pool<FTask<T>>.Rent() : new FTask<T>();
|
||||
task._isFromPool = isFromPool;
|
||||
return task;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dfe1e7044d17abb41a98dd6e2ad51896
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
157
Assets/GameScripts/DotNet/Core/Task/Partial/FTask.WhenAll.cs
Normal file
157
Assets/GameScripts/DotNet/Core/Task/Partial/FTask.WhenAll.cs
Normal file
@@ -0,0 +1,157 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TEngine
|
||||
{
|
||||
public partial class FTask
|
||||
{
|
||||
public static async FTask WhenAll(List<FTask> tasks)
|
||||
{
|
||||
if (tasks.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var count = tasks.Count;
|
||||
var sTaskCompletionSource = Create();
|
||||
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
RunSTask(sTaskCompletionSource, task).Coroutine();
|
||||
}
|
||||
|
||||
await sTaskCompletionSource;
|
||||
|
||||
async FVoid RunSTask(FTask tcs, FTask task)
|
||||
{
|
||||
await task;
|
||||
count--;
|
||||
|
||||
if (count <= 0)
|
||||
{
|
||||
tcs.SetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async FTask Any(params FTask[] tasks)
|
||||
{
|
||||
if (tasks == null || tasks.Length <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var tcs = FTask.Create();
|
||||
|
||||
int count = 1;
|
||||
|
||||
foreach (FTask task in tasks)
|
||||
{
|
||||
RunSTask(task).Coroutine();
|
||||
}
|
||||
|
||||
await tcs;
|
||||
|
||||
async FVoid RunSTask(FTask task)
|
||||
{
|
||||
await task;
|
||||
|
||||
count--;
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
tcs.SetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public partial class FTask<T>
|
||||
{
|
||||
public static async FTask WhenAll(List<FTask<T>> tasks)
|
||||
{
|
||||
if (tasks.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var count = tasks.Count;
|
||||
var sTaskCompletionSource = FTask.Create();
|
||||
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
RunSTask(sTaskCompletionSource, task).Coroutine();
|
||||
}
|
||||
|
||||
await sTaskCompletionSource;
|
||||
|
||||
async FVoid RunSTask(FTask tcs, FTask<T> task)
|
||||
{
|
||||
await task;
|
||||
count--;
|
||||
if (count == 0)
|
||||
{
|
||||
tcs.SetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async FTask WhenAll(params FTask<T>[] tasks)
|
||||
{
|
||||
if (tasks == null || tasks.Length <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var count = tasks.Length;
|
||||
var tcs = FTask.Create();
|
||||
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
RunSTask(task).Coroutine();
|
||||
}
|
||||
|
||||
await tcs;
|
||||
|
||||
async FVoid RunSTask(FTask<T> task)
|
||||
{
|
||||
await task;
|
||||
count--;
|
||||
if (count == 0)
|
||||
{
|
||||
tcs.SetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async FTask WaitAny(params FTask<T>[] tasks)
|
||||
{
|
||||
if (tasks == null || tasks.Length <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var tcs = FTask.Create();
|
||||
|
||||
int count = 1;
|
||||
|
||||
foreach (FTask<T> task in tasks)
|
||||
{
|
||||
RunSTask(task).Coroutine();
|
||||
}
|
||||
|
||||
await tcs;
|
||||
|
||||
async FVoid RunSTask(FTask<T> task)
|
||||
{
|
||||
await task;
|
||||
|
||||
count--;
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
tcs.SetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef20b979a90164a45ad1e3ee2e5b1b09
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user