zhouqijie

UniRx多线程

Siki:Unity中一般使用Thread.Start开启一个线程。当逻辑非常复杂的时候多线程非常难以管理。使用UniRx使多线程更简单。

void Start()
{
var threadAStream = Observable.Start(() =>
{
    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
    return 10;
});
void threadBStream = Observable.Start() =>
{
    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
    return 10;
});
Observable.WhenAll(threadAStream,threadBStream)
    .ObserveOnMainThread()
    .Subscribe(xs =>
    {
        Debug.Log(xs[0] + ":" + xs[1]);
    });
}

Siki:可以使用Observable.Start这个API开启一个线程流。
Siki:ObserveOnMainThread意思是把WhellAll结果转到主线程上。这样Subscribe⾥ 的回调就可以使⽤Unity的API了(Unity的很多API不可以在其他线程中使⽤)。

(END)