一:线程与进程
每次启动一个应用程序就是启动一个进程,一个进程中可以包含一个或多个线程,在进程入口执行的第一个线程被视为这个进程的主线程
对于所有需要等待的操作,例如移动文件,数据库和网络访问都需要一定的时间,此时就可以启动一个新的线程去执行这些耗时的操作,一个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);
});