C#中的多线程

本文详细介绍了线程与进程的关系,包括主线程、前台线程和后台线程的区别,以及多线程的优点和缺点。重点讲解了Unity中的线程使用,展示了各种线程开启方式,如异步委托、Thread类、线程池和Task类,并提及了线程同步与协程的区别。
摘要由CSDN通过智能技术生成
一:线程与进程

每次启动一个应用程序就是启动一个进程,一个进程中可以包含一个或多个线程,在进程入口执行的第一个线程被视为这个进程的主线程
对于所有需要等待的操作,例如移动文件,数据库和网络访问都需要一定的时间,此时就可以启动一个新的线程去执行这些耗时的操作,一个CPU在同一时刻只能运行一个线程,但是多个CPU在同一时刻就可以运行多个线程。开启一个线程后并不是立即执行,CPU会把这个线程标记为可执行状态,具体执行时间由CPU决定

前台线程与后台线程:只要有任何一个前台进程在运行那么应用程序的进程就会在运行,默认情况下使用Thread创建的线程都是前台线程,使用线程池创建的线程都是后台线程,使用Thread类创建的线程可以通过Thread.IsBackground进行设置,当所有前台线程都运行完毕后如果还有后台线程在运行,那么所有的后台线程都会被终止掉


二:多线程的优缺点

优点
——提高了CPU的利用率
——提高了程序的执行速度

缺点
——线程也是程序,所以线程需要占用内存,线程越多,占用内存也越多
——多线程需要协调和管理,所以需要占用CPU时间以便跟踪线程
——线程之间对共享资源的访问会相互影响,必须解决争用共享资源的问题
——线程太多会导致控制太复杂,最终可能造成很多程序缺陷


三:Unity中的线程

Unity核心的游戏逻辑全部都是在一个线程里完成,也就是我们常说的Unity主线程,Unity中是可以使用多线程的,但需要注意在Unity里一些关键性的数据在其它线程是不能访问修改的

using UnityEngine;
using System.Threading;

public class Test : MonoBehaviour
{
    private void Start()
    {
        Thread thread = new Thread(() =>
          {
              Debug.Log("start new thread , id : " + Thread.CurrentThread.ManagedThreadId);
              Debug.Log(transform.position);
          });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值