0%

CSharp 多线程的几种写法

引子

异步线程调用

异步调用线程,线程消息回调主线程

其他线程 作为生产者产出消息,主线程作为消费者 消费其他线程的产出

多个线程之间消息传递

示例 渲染系统,将渲染任务交给Render线程,将数据收集交给Collect线程

主线程(传递消息到Render线程) -> 渲染任务(消息告诉Collect线程去收集需要的信息) -> Collect任务(消息传递到Render线程) -> 渲染任务执行-> 执行完成以后消息(传递消息到主线程) -> 主线程执行下一帧循环

需要 几个 消费队列

  1. 主线程消费队列
    • 渲染任务完成消息
  2. Render 线程消费队列
    • 主线程渲染任务
    • Collect线程渲染信息
  3. Collect 线程消费队列
    • 渲染线程需要收集什么信息

要保证Render线程和Collect线程处于激活状态

通过线程池创建线程

前端线程和后端线程是不同的,

后端线程在主线程退出后就暂停销毁了
前端线程还会继续执行

Task 创建多线程

Thread 创建多线程

欢迎关注我的其它发布渠道