在unity中,自己动手实现多线程作业功能----使用C#的线程

本文介绍了如何在Unity中使用C#的线程实现多线程作业功能,讨论了锁机制和死锁的概念,提供了代码实现并展示了其在并发打印任务中的应用。
摘要由CSDN通过智能技术生成

疫情当前,呆着家里,总结关于工作中遇到的问题和解决思路,是一个很好的学习机会,珍爱生命,懂得感恩,一切会好起来的。

一、写在之前

之前的一篇文章中https://blog.csdn.net/THUNDERDREAMER_OR/article/details/104213670,我提到了网格规划算法的计算量比较大,对三个切面分别进行计算的时候,使用多线程是一个不错的想法,实际上我也是这么做的。现在我们来分析一下,怎样使用C#的Threading自己动手实现多线程并行计算。

知识预热。涉及到多线程,不得不说多因线程之间的通信和竞争而导产生问题,因此锁机制和“死锁”的概念便应用而生。

  1. 锁机制

在竞争态条件下,多个线程对同一竞态资源的抢夺会引发线程安全问题。竞态资源是对多个线程可见的共享资源,主要包括全局(非const)变量、静态(局部)变量、堆变量、资源文件等。

线程之间的竞争,可能带来一系列问题:

  1. 线程在操作某个共享资源的过程中被其他线程打断,时间片耗尽而被迫切换到其他线程
  2. 共享资源被其中一个线程修改之后,并未通知同步到其他线程,造成线程间的数据访问不一致
  3. 编译器优化等导致若干操作指令的执行顺序打乱而造成的结果

为了解决由多进程多资源的同时操作引起的问题,提出了锁机制。在某一时刻只允许有一个进程运行它的临界区代码,从而保证临界资源的中数据的一致性。临界资源是指能够被多个线程共享的数据、资源。临界区代码是指多临界资源操作的那段代码。

这里只介绍互斥锁(mutex lock)的概念和原理,另外一种是自旋

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值