引入:网络编程基础认识
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()表示令调用其的线程休眠指定时间


1780

被折叠的 条评论
为什么被折叠?



