| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> C# 进程(Process)与线程(Thread)的理解及运用 -> 正文阅读 |
|
[游戏开发]C# 进程(Process)与线程(Thread)的理解及运用 |
一、进程、线程和协程的理解在unity中可以使用多线程去做 解压资源、更新资源等操作。因为单开线程的话 不会影响主线程卡顿,这样UI就不会卡了。但是开的线程里边不能执行unity主线程的mono代码。线程启动后,执行完毕自动结束该线程、可以同时启动多个线程做事。 比如微信,在启动的时候就会开两个线程。微信有两个进程分别是com.tencent.mm(A), com.tencent.mm:push(B),这里可以把A进程当成是主要处理UI变化的进程,B进程是处理消息同步的进程,在把A进程关掉之后,如果没有消息触发,B进程是不会唤醒A进程,而当B进程被干掉后,微信的做法是A进程也同时被干掉了,个人猜测微信的做法可能是基于这种情况,如果只有A进程,那是收不到消息的,因为消息处理都是在B进程进行的,这就会出现很多bug。 实时通讯软件需要有一个后台服务常驻,但是通常情况下单一进程容易被干掉,双进程的好处一个是可以实现相互唤起,另一个好处单独进程去处理消息更不容易出现消息的阻塞现象,这点对实时通讯软件还是比较关键的。 1、进程、线程、协程的区别和定义进程(Process)是一个实体,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 线程(Thread)是进程中的实际运作单位,进程的基本单元;一个进程可以包含若干个线程,某个程序开始时执行时,进程的第一个线程被默认为该进程的主线程。 协程(IEnumerator)是一个线程执行,两个子过程通过相互协作完成某个任务。协程和子程序调用很像,但协程是在子程序内部中断去执行别的子程序,适当时候返回接着执行,中断有别于函数调用。 线程之间的联系: 多线程的优点: 多线程的缺点: 2、串行,并行和并发的基本概念二、线程的使用引用:System.Threading 创建一个新线程: thread.Start(): 让一个线程开始执行
1、当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。 2、当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。 3、只有IsBackground=TRUE的线程才会随着主线程的退出而退出 注:关于lock关键字,可参考这篇博客:https://www.cnblogs.com/jintianhu/archive/2010/11/19/1881494.html 再来个双线程案例:
运行后的结果如下图: 三、进程(Process)的使用Process类 具体可参考此博客:C#的 Process类 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 2:50:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |