永发信息网

为什么这个函数不会执行协程里面的函数

答案:2  悬赏:60  手机版
解决时间 2021-02-02 13:49
为什么这个函数不会执行协程里面的函数
最佳答案
本质上什么是协程?举个例子:就是类似goto一样 可以在多个fun之间来回跳转~ 比如A函数执行到一半然后switch到B函数执行~~诸如此类. 那如果只考虑一个函数呢??那对于A函数而言:其实就是其可以执行到一半先停下,干点别的事情后再接着往下运行~ 看到这里你是不是想到了debug时的打断点??执行到断点的时候就停下,只有next往下setp时候这个函数才接着往下执行~对不对? 那如果我们可以实现类似的断点机制,是不是就可以实现多个函数来回跳转呢?A函数执行到断点时就停下,系统去B执行~等B执行完毕了才回来接着step往断点后边的代码航执行~~~~  协程其实就是这么个东西,那么在Python中山门可以实现debug断点功能呢?当然是yield了~~执行到中间的yield系统就停下返回了~之后在调用next时才回接着往下执行~~~ 你看,是不是通过这个东西就可以做到多个函数之间来回跳转??!  恩,那山门时候跳转呢?之前是yield才会,那我是不是可以将之封装一下呢?封装成:一个协程,然后sleep就yield出来~~ 折下来就做到协程的功能来~~  本质上就是这么回事~~~别听别人说的多悬乎~~~只是在这个基础模型上又加了很多manager的功能等等
全部回答
为什么总是有人会问相同的问题呢,这个问题在知道上不知道有多少人回答相同的答案了 以下是我的回答 ---------------------------------------------------------------------------------------- 主要用于等待,比如www进行服务器请求的时候,由于服务器和网络有延迟,不可能立刻获得数据,这时候,就可以 yield return www. 又比如,想延迟2秒之后做一些事情,就可以yield return new waitforsecend(2); coroutine可以叫做协程,协程里面的主要工作除了正常的逻辑之外就是各种等待,等待其他协程完成,等待www,等待若干时间,等待异步处理等等。 其中 开启一个协程代码为 startcoroutine(函数名(函数参数)); 开启一个协程并等待这个协程完成的代码为 yield return startcoroutine(函数名(函数参数)); 为什么需要协程看因为不希望程序在等待的时候让主线程卡死 比如 public void start() { while(true) {} } 那么程序就会卡死,因为无时无刻不在while循环,渲染没法进行 但是加入用协程 public ienumerator start() { while(true) { yield return 1; } } 那么程序就不会卡死,原因在于yield return 1;这句话让程序等待了一帧,然后再运行while循环,换句话说就是每一帧循环一次,这样,渲染就可以在这段时间运行,程序就看起来不会卡住了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
斗破苍穹斗仙为什么帮萧炎
虚张声势的意思是什么啊?知道的请说下!
怎样进行观察教案及反思
乐宝便利店地址在什么地方,我要处理点事
阿胶在猪苓汤中的配伍意义是A.滋阴润燥B.滋阴
交通事故同车人员逃逸怎么处理
带着金刚菩提洗澡没事吧!
amd athlonII X3 450怎么超频?下面是我电脑
新民街51号地址在什么地方,我要处理点事
【威斯特伐利亚和约】1648的威斯特伐利亚和约
女 脚宽9 亚瑟士要不要买宽楦的
列衔的意思是什么啊?知道的请说下!
不用网银买游戏币装什么软件
Mr.Wu teaches us English 这句话有错误的地
哪部漫画有一个叫小萤的
推荐资讯
闵怎么读音是什么
施工企业营业收入是含税工程造价 还是不含税
能读WORD文档的有声读书软件
有一篇文章成语最多叫什么
为什么小金龙鱼光吃小鱼不吃饲料
叶家村怎么去啊,我要去那办事
中国明星有几个进美国好莱坞大片
电子眼会拍不戴头盔吗
求助,关于来源补充规则和批准的供应商列表的
怎样改变女同性恋的性取向
中国旅行社(东城领袖分公司)地址在什么地方,
你们看看这配置玩吃鸡 gtx970 4g 锐龙2200g
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?