1.ui线程问题。比如有一个后台协程,在需要更新界面内容的情况下,如何回到ui线程?非ui线程直接操作ui会失败的。
2.协程敏感的api范围问题。io操作的范围非常广,并口串口usb蓝牙等等。就算是大类网络和文件,也有查询dns和查看文件信息这种,可以异步但大家一般用的都是同步版本的api.协程敏感的api设计对这些如何处理的?
3.性能问题。你不是正经的c++程序员出身的,所以很多c++或是传统程序员的习惯你不太清楚。
这些人每多一次内存访问都会追问的,因为这就意味着100个时钟周的消失。
Green thread这种实现方式,和普通协程相比,有可能多加个几十条指令和多次内存访问,这些都是代价,当然也可以通过属性等手段去规避一些,我之前的性能问题问的是这个。
你上次用汇编在我这碰了一次壁之后,这次又开始用c++来了。如果你感兴趣,我可以告诉你,我在主力转向c#之前纯靠c++吃了9年的饭。我之前混过c++版,当时c++版活跃人物是rockcock,ctrlz,netmd等id。
不愿意提这些一个是会暴露年龄,另外一个是我尽量不用年资,只用纯技术去讨论问题。
gpmn不讨论技术细节,直接上来说他有20年经验,是蛮油腻的
4.用户想添加新api,Green thread感知部分怎么做?
5.协程给并发问题增加了很多情况,比如某协程需要回到某线程去,而该线程被占用了,就hang了。多写点复杂代码应该能遇到各种情况的
【 在 hgoldfish 的大作中提到: 】
: go 的协程等别人来回答,我回答一下比较有把握的 python 协程吧,同时包含 gevent 和 asyncio 两种方案。gevent 抄 eventlet 两者 API 几乎一样不说。
: 1. 支持 UI,不才就是 eventlet-pyqt 的作者,而 asyncio qtinter 的作者 fanci 也在本站 python 版上混。
: 2. gevent 有 monkey patch 随便支持,在无感知的情况下现有程序直接转换成协程版本,适用对象是几乎所有纯 python 写的源代码,用了 c 写的比如 mysql 除外,但 pgsql 支持。而 asyncio 和 c# 一样,分阻塞和非阻塞两个版本。支持协程 API 有额外的工作,和 c# 一样。go 语言底层要求所有 IO 操作都是协程友好,所以类似于 gevent,比 asyncio 和 C# 强。
: ...................
--
修改:leadu FROM 123.116.219.*
FROM 123.116.219.*