搜索

23

主题

82

帖子

455

积分

超级版主

Rank: 8Rank: 8

积分
455
发表于 2019-6-21 15:06:30 375 浏览 3 回复

【收集讨论】ETTask相关

ETTask

1. ETtask只能用unity2018.3以上版本
2. ETTask是一个轻量级单线程的task,相比Task性能更强,GC更少
3. async ETVoid可以不需要trycatch (async void中需要自己去try catch)
4. publicETTask<IResponse> Call(IRequest request, CancellationTokencancellationToken)


【群主】熊猫-招聘前后端,有意请@(80081771)2019-02-20 16:38:02
ETtask只能用unity2018.3以上版本

ETTask是一个轻量级单线程的task,相比Task性能更强,GC更少
【群主】熊猫--上班不方便看群,有问题请上论坛提问(80081771) 2018-10-19 14:27:13
优化了一波ETTask,增加了ETVoid替代async void,性能大大提高,现在应该很完美了
【码仙】许木大大<jhdfrox@qq.com> 12:23:04
用async ETVoid以后就不需要搞个trycatch了吧
【群主】熊猫--上班不方便看群,有问题请上论坛提问(80081771) 12:32:44

可以不用
【群主】熊猫15:22:15

不用ETVoid就要用asyncvoid,async void生成的东西比较复杂,性能稍微差一点
【群主】熊猫 22:33:55

刚刚我又测试了一遍,异步中没trycatch,打印异常正常,注意master中不要使用async void,要用ETVoid代替,这样才能捕获异常打印log,否则asyncvoid中需要自己去try catch
【群主】熊猫-招聘前后端,有意请@(80081771) 2018-11-13 15:47:45
甚至ETTask只支持单线程
【群主】熊猫-招聘前后端,有意请@(80081771)2019-02-14 11:37:36

因为task太容易被人误解,我专门搞了个完全单线程的ETtask


【码仙】问天(651523294)18:42:47
猫大,是不是换了ETTask就不需要try-catch了
【群主】熊猫-招聘前后端,有意请@(80081771) 18:43:09
@问天 因该是的
【群主】熊猫-招聘前后端,有意请@(80081771) 18:43:32

ETTask默认会Log.Error(e)


【群主】熊猫-招聘前后端,有意请@(80081771) 2019-01-17 10:33:28

@ks 把ETTask当成Task使用就行了


【群主】熊猫-招聘前后端,有意请@(80081771)2019-03-11 11:50:19

ILRuntime找不到错误的问题,一般是协程的顶层中没有trycatch Log.Error(e).使用master可以解决,master是ETTask已经自动加上了,4.0需要自己try catch Log.Error


申明:  所有搜集讨论中的聊天记录, 昵称前面的标注【码*】 仅代表QQ群聊活跃等级. 不代表其他意思.
回复

使用道具 举报

23

主题

82

帖子

455

积分

超级版主

Rank: 8Rank: 8

积分
455
 楼主| 发表于 2019-6-21 15:08:42
【码仙】深圳-unity-ks(1227114700)22:15:05
ETTask那个Tasklike object
【码仙】深圳-unity-ks(1227114700)22:15:25
协程的底层使用类似于状态机的东西做的
【码仙】深圳-unity-ks(1227114700)22:15:35
猫大那个写得我看不懂了
【码仙】深圳-unity-ks(1227114700)22:15:38
资料太少了
【码仙】深圳-unity-ks(1227114700)22:16:06
我只找到一篇
【码仙】深圳-unity-ks(1227114700)22:16:07




【群主】熊猫-招聘前后端,有意请@(80081771)2019-05-03 22:41:44
@烟雨迷离半世殇哪有这么复杂啊,ettask就是task,etvoid就是async void
【群主】熊猫-招聘前后端,有意请@(80081771)2019-05-05 10:30:46
这两个使用很简单啊,etvoid是代替asyncvoid,意思是新开一个协程。ettask跟task一样。当然task不去await也相当于新开协程,但是编辑器会冒出提示,提示你await。所以新开协程最好用etvoid。4.0用asyncvoid。使用场景,自己写写就明白啦
【群主】熊猫-招聘前后端,有意请@(80081771)20:19:22

协程就是回调啊


【码圣】xxxixxxxx<aitt498506133@vip.qq.com>18:58:17
awaitETTask.CompletedTask;这句代码是啥意思啊
【码圣】xxxixxxxx<aitt498506133@vip.qq.com>18:58:54
ETTask.CompletedTask 和Task.CompletedTask的用法一样吗
【码仙】独钓寒江翎(395338563)18:59:00

yes



【码神】烟雨迷离半世殇(1778139321)10:29:20
解析C#中的异步方法
拓展C#中的异步方法
C#中异步方法的特征性能特征



【码农】LenSea(510264505)10:22:17
async  ETTask 方法名().Coroutine(); 之后,有什么方法可以主动停止异步吗
【码仙】底层拼图仔AE(210379417) 10:24:31
传递cancelToken
【码农】LenSea(510264505)10:26:06
是这种操作嘛
【码仙】底层拼图仔AE(210379417) 10:28:23
asyncawait 如果用的Task. await后面的部分是不确定在哪个线程执行的,猫大以前4.0的做法就是把上下文抛到主线程,让主线程执行.
如果用的是ETTask.await后面的部分是一定在主线程执行的. 就完全相当于写了个回调方法了.
【码仙】底层拼图仔AE(210379417) 10:28:48

双击查看原图Task实际上也是回调, 不过这个回调方法的执行原本可能不在主线程罢了.




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
申明:  所有搜集讨论中的聊天记录, 昵称前面的标注【码*】 仅代表QQ群聊活跃等级. 不代表其他意思.
回复

使用道具 举报

23

主题

82

帖子

455

积分

超级版主

Rank: 8Rank: 8

积分
455
 楼主| 发表于 2019-6-21 15:23:22
【码圣】Masayume<s307020066@163.com> 10:40:09
【码圣】Masayume<s307020066@163.com> 10:40:55
实际上这个类是否就是一开始的那个线程通讯用的上下文?
【码圣】熊龙猫(1469063828) 10:41:34
对的.
【码圣】熊龙猫(1469063828) 10:41:51
所有的回调最终都会跑到这里来执行.
【码圣】熊龙猫(1469063828) 10:42:54
你需要做的就是调用这个里面的post把回调扔进去就可以了.
【码圣】Masayume<s307020066@163.com> 10:43:10
【码圣】Masayume<s307020066@163.com> 10:43:23
但是我不是很理解为什么还会有这句
【码仙】熊猫就一写代码的懂个屁ET(1304085906) 10:43:37
哪句
【码圣】Masayume<s307020066@163.com> 10:43:44
为啥还会有抛给主线程的情况
码仙】熊猫就一写代码的懂个屁ET(1304085906) 10:44:01
你post时的线程是主线程就直接调用
【码神】烟雨迷离半世殇(1778139321) 10:44:12
et只有一个线程
【码圣】熊龙猫(1469063828) 10:44:52
网络那边应该不是单线程的.
【码神】烟雨迷离半世殇(1778139321) 10:45:48
不是吗?
【码圣】熊龙猫(1469063828) 10:47:18
在这个地方打个断点看能否命中就好了.
【码仙】熊猫就一写代码的懂个屁ET(1304085906) 10:47:19
et单线程应该是指多线程上的网络消息会通过同步上下文变成单线程的
【码圣】熊龙猫(1469063828) 10:47:24
对的
【码圣】熊龙猫(1469063828) 10:48:02
我记得之前我看的时候断点是可以命中的.所以我推测是多线程的.
【码神】烟雨迷离半世殇(1778139321) 10:51:33
@熊猫就一写代码的懂个屁ET 就是这个意思
【码神】烟雨迷离半世殇(1778139321) 11:02:46
【码神】烟雨迷离半世殇(1778139321) 11:02:57
ETBook的内容
【码仙】熊猫就一写代码的懂个屁ET(1304085906) 11:04:21
【码神】烟雨迷离半世殇(1778139321) 11:05:13
【码仙】熊猫就一写代码的懂个屁ET(1304085906) 11:06:00
我记得await后的内容是在setResult里执行的吧
【码仙】熊猫就一写代码的懂个屁ET(1304085906) 11:06:29
那await后的代码执行在哪个线程就取决于setResult是在哪个线程里了?



【码神】山有木兮木有枝<q-lavender@qq.com> 14:59:25
原来ETTask是这么来的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
申明:  所有搜集讨论中的聊天记录, 昵称前面的标注【码*】 仅代表QQ群聊活跃等级. 不代表其他意思.
回复

使用道具 举报

23

主题

82

帖子

455

积分

超级版主

Rank: 8Rank: 8

积分
455
 楼主| 发表于 2019-6-21 15:39:39
【码圣】梦不死(77122954) 15:12:48
都说ET是单线程。但在接收网络消息的时候应该是多线程的吧?多个session同时收到消息是否同时在处理?涉及到公共数据的改变是否应该做队列处理?
【码圣】々风恒¢(710490061) 15:13:28
网络消息接收是异步,处理是回主线程
【码圣】梦不死(77122954) 15:15:31
@ 々风恒¢ 请指点一下,在哪个位置回主线程了?小白看不出来
【码圣】々风恒¢(710490061) 15:16:08
在主循环那看起
【码圣】梦不死(77122954) 15:21:49
@ 々风恒¢ 就是这一句?
【码圣】々风恒¢(710490061) 15:22:02
不是,在循环里的
【码圣】梦不死(77122954) 15:22:51
这里?
【码圣】々风恒¢(710490061) 15:23:08
对的
【码圣】々风恒¢(710490061) 15:23:34
然后你去TCP的channel实现里,看下接收到数据后的处理
【码圣】梦不死(77122954) 15:23:59
好的谢谢!
【码圣】梦不死(77122954) 15:28:03
啊……TChannel里是这样,我在用WebSocket…………WChannel里面没有这样写呀……


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
申明:  所有搜集讨论中的聊天记录, 昵称前面的标注【码*】 仅代表QQ群聊活跃等级. 不代表其他意思.
回复

使用道具 举报

返回列表
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

团队

ET社区

官方客服

QQ:754394098

讨论QQ群:

474643097(1群)

253518148(2群)

快速回复 返回顶部 返回列表