Unity网络编程(1)多线程

引入:网络编程基础认识

1.了解操作系统的分时操作:

操作系统将时间划分为很多个片段,尽可能均匀地分配给正在执行的线程

获得时间片的进程得以运行,其他则在等待

CPU在这些进程上来回切换,频密,让人感觉多个进程在同时执行

2.概念认识:

(1)进程是程序的边界,程序与程序间以进程为隔离    靠线程执行程序,

   线程是进程内部的组成单位,指向方法,执行完毕释放线程

(2)进程是资源分配的单位,

   线程是执行的单位,是进程中的一个执行单元,是CPU分配时间片的单位

(3)线程的本地存储器:TLS

线程的本地存储器(Thread Local Storage, TLS)是一种用于在多线程程序中为每个线程提供独立存储区域的机制。它允许每个线程有自己独立的变量副本,这些变量在不同线程之间不会互相干扰,从而避免了数据竞争和同步问题。

(4)Socket编程:使多个进程间能够进行通信,网络编程中,Socket 是一种用于网络通信的基本概念和接口。它是一种抽象层,提供了不同网络协议(如 TCP/IP 和 UDP)的通信机制,允许应用程序在网络上进行数据交换。Socket 允许程序与其他网络节点(例如计算机、服务器等)进行连接和数据传输。

3.可能疑问

1.辅助线程和日常使用的异步async协程 Coroutine的区别:

这里要明确的是异步和携程 主要依赖于主线程,并不会自动创建新的线程。


一.线程

1.对线程的印象

Unity默认只有一条主线程,在主线程内运行Unity生命周期函数,但是Unity是支持多线程的。

日常生活中我们可能会遇到这样一种情况:

在高中的时候,我们一般都会遇到在食堂的一个窗口前排队买饭的情景,现假设只有一个窗口可以供同学们打饭,每位同学依次排队打一 ~ 五单位的饭,但是,如果出现了一位同学,假如他的饭量有亿点大,要打100个单位的饭,那他后面的同学岂不是都饥肠辘辘了?这时,我们可以多开几个窗口,让一个窗口专门去处理这位大胃王的饭,这样一来全体同学的打饭效率就得到了提升

线程的作用可以类比上面的例子。

2.为什么使用线程

当主线程内运行计算量大的耗时计算时,移至线程计算

使用多线程减少程序的运行时间

3.线程的优缺点

优点:

并行执行,合理利用CPU资源

相同程序的线程共享堆内存

缺点:                                             |       解决方案

频繁创建、销毁线程增加性能开销  |(使用线程池)

访问共享资源可能造成冲突             |(使用lock来同步线程)

辅助线程不能访问Unity API            |(“外包”给委托)

4.线程的创建

说了这么多,我们直接了解如何创建线程吧 @\/@

我们先定义到Thread内部去看看Thread内置的方法

可以看到接收的是一个委托类型的参数,且该委托的参数为无参或object类型

我们可以利用一个无参函数,也可以通过匿名函数来创建线程

实验一下,在这里我写了三种形式,代码里的System.Sleep()表示令调用其的线程休眠指定时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值