Unclaimed Package Is this your package? Claim it to unlock full analytics and manage your listing.
Claim This Package

Install via UPM

Add to Unity Package Manager using this URL

https://www.pkglnk.dev/litask.git

README Markdown

Copy this to your project's README.md

Style
Preview
pkglnk installs badge
## Installation

Add **Litask** to your Unity project via Package Manager:

1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/litask.git
```

[![pkglnk](https://www.pkglnk.dev/badge/litask.svg?style=pkglnk)](https://www.pkglnk.dev/pkg/litask)

Used By (1)

README

LitTask

C# Task的轻量无GC Alloc版本实现。 LitTask是ValueType实现,同时内部对非值类型也采用了对象池管理。

优势:

  • 无GC Alloc (在Release编译模式下).
  • 性能好.

缺点:

  • 线程不安全.
  • 一个LitTask只能被await一次.
  • 最好不要对LitTask进行引用,而应该在返回的时候马上await或者Forget掉

Install

For unity package manager, add:

"com.ms.litask":"https://github.com/wlgys8/LitTask.git"

to Package/manifest.json

Usage

  • async function

    
    async LitTask RunAsync(){
        await new SomeAwaitableObject();
    }
    
    
    async LitTask<int> GetValueAsync(){
        await new SomeAwaitableObject();
        return 100;
    }
    
  • LitTask.WhenAll(params LitTask[] tasks) => LitTask

    同时启动所有任务,并等待所有任务完成。
    
  • LitTask.WhenAny(params LitTask[] tasks) => LitTask<WhenAnyResult>

    同时启动所有任务,只要有一个任务结束,就返回。
    

FAQ

  • 在Unity Editor中使用Profiler分析发现有GC Alloc?

    这是因为在Debug编译模式下,async/await编译出来的状态机是class类型的. Release编译模式下会切换成struct类型,就无alloc了。 Unity2020已经支持了在编辑器中切换release/debug编译模式。可以测试看看。

Comments

No comments yet. Be the first!