什么是 协同程序呢具体的含义是什么呢(在unity中)

什么是 协同程序呢具体的含义是什么呢(在unity中),第1张

协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instruction pointer),但与其它协同程序共享全局变量等很多信息。线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。

嫦娥二号任务的成功实施,将验证直接奔月轨道发射、100km近月制动、15km变轨、高精度成像、X频段深空测控体制等关键技术,还将验证低密度奇偶校验编译码、紫外敏感器自主导航、高速数据传输、降落相机等新技术,为后续月面软着陆及深空探测任务奠定重要的技术基础;同时,在科学上将获得更加丰富和准确的探测数据,深化对月球的科学认知。

六大工程目标

(一)突破运载火箭直接将卫星发射至地月转移轨道的发射技术。

突破直接进入奔月轨道的d道设计技术、运载火箭低温三子级滑行时间可调技术,利用CZ-3C运载火箭将卫星直接送入地月转移轨道,降低二期工程后续任务的实施风险。

(二)试验X频道深空测控技术,初步验证深空测控体制。

在CE-2卫星上搭载X频段应答机,与我国X频段地面测控设备配合,验证X频段测控体制,为CE-3任务积累工程经验。

(三)验证100km月球轨道捕获技术。

选择与CE-3任务相似的奔月、月球捕获轨道,通过实际飞行掌握直接奔月和100km近月捕获技术,为CE-3任务探索技术途径;CE-2卫星在100km轨道长时间运行,探测100km轨道空间环境,积累更多的近月空间环境数据,提高月球探测热红外分析模型的准确性。

(四)验证100km×15km轨道机动与快速测定轨技术。

开展100km×15km轨道机动试验,验证CE-3任务着陆前在不可见弧段变轨的星地协同程序;在100km×15km轨道飞行期间,验证100km×15km轨道快速测定轨能力,这些测定轨数据对深入研究月球重力场分布,提高重力场模型精度有重要意义。

(五)试验低密度校验码(LDPC)遥测信道编码、高速数据传输、降落相机等技术。

配置降落相机,校验其对月成像能力;试验强纠错能力的LDPC信道编译码技术,提高卫星遥测链路性能,为探月工程和其他深空探测项目提供技术储备;将卫星数传码速率提高至6Mbit/s,试验12 Mbit/s,以期满足数据传输量增大的需求。

(六)对CE-3任务预选着陆区进行高分辨率成像试验。

在100km×15km轨道,CCD立体相机在15km近月点处对CE-3任务预选着陆区进行优于15m分辨率成像试验;在100km圆轨道,对预选着陆区进行优于10m分辨率成像。利用预案着陆区月表图像,绘制三维地形图,有利于定量评估预选着陆区的特性,提高CE-3任务着陆安全性。

三、四大科学目标

(一)获取月球表面三维影像,分辨率优于10m。

利用CCD立体相机获取高分辨率的月球表面三维影像,结合激光高度计获取的月表地形高程数据,可获取月球表面高精度地形数据,为后续着陆区优选提供依据,同时为划分月球表面的地貌单元精细结构、断裂和环形构造,提供原始资料。

(二)探测月球物质成分。

利用经技术改进的γ射线谱仪和X射线谱仪,可以探测月球表面9种元素——硅、镁、铝、钙、钛、钾、钍、铀的含量与分布特征,获得更高空间分辨率和探测精度的元素分布图。

(三)探测月壤特性。

利用微波探测技术,测量月球表面的微波辐射特征,获取30GHz、78GHz、1935GHz、37GHz的微波辐射亮度温度数据,估算月壤厚度。

(四)探测地月与近月空间环境。

嫦娥二号卫星在轨运行期间正是太阳活动高峰年,是探测研究太阳高能粒子事件、CME、太阳风,及它们对月球环境影响的最佳探测时期。利用太阳高能粒子探测器和太阳风离子探测器,获取行星际太阳高能粒子与太阳风离子的通量、成分、能谱及其随时空变化的特征,可研究太阳活动与地月空间及近月空间环境的相互作用;获取地月空间环境数据,可为后续探月工程提供环境科学数据。

协同程序

协同程序——在主程序运行的同时开启另一段逻辑处理,来协同当前程序的执行,开启协同程序就是开启一个线程。

协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instructionpointer),但与其它协同程序共享全局变量等很多信息。

线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;

而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。

开启协同程序

使用MonoBehaviorStartCoroutine可以开启一个协同程序,所以该方法需要在继承Monobehaviour的类中调用

Unity3D中,使用StartCoroutine(StringmethodName)和startCoroutine(IEnumeratorroutine)都可以开启一个线程,

a使用字符串作为参数可以开启线程并在线程结束之前终止线程,开启线程最多只能传递一个参数

b使用IEnumeraotor开启的的线程不能随时终止(除非使用StopAllCoroutines()方法)

没有参数个数的限制

终止协同程序

aUnity使用StopCoroutine(StringmethodName)来终止一个协同程序,使用StopAllCoroutine来终止所有协同程序,但是这两个方法都只能终止该MonoBehaviour中的协同程序

b将协同程序所在的gameObject的acitve属性设置为false,当再次设置active为true的时候,协同程序不会再开启,而设置enable和false则不会生效,因为协同程序开启后是以一个线程在运行的,它与MonoBehavior是互不干扰的模式在运行,此后除非代码调用,他们共同作用于同一个对象,只有当对象不可见的时候才能够同时终止这两个线程。

脚本被卸载时,OnDisable将被调用,OnEnable在脚本被载入后调用。注意: OnDisable不能用于协同程序。 OnDestroy:当MonoBehaviour将被销毁时,这个函数被调用

以上就是关于什么是 协同程序呢具体的含义是什么呢(在unity中)全部的内容,包括:什么是 协同程序呢具体的含义是什么呢(在unity中)、嫦娥2号的任务是什么,、关于Update和协同程序的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9512933.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存