- 主题:觉得协程不是一个太好的编程模型
这也是个很大的好处,解放码农的:
协程使得异步代码看起来像是同步代码,开发者可以更容易地理解和调试代码,从而提高可维护性。
--
FROM 114.241.228.*
主要还是C++的协程规范搞得晚了,别的语言都用了多久了,而且是大规模使用,肯定可以积累好的实践和规范。
乱搞那肯定是没法维护的,就跟乱throw、乱catch异常一样
【 在 DoorWay 的大作中提到: 】
: 开发者更容易理解,版面就不会这么多大佬一直在讨论了。
: 我看是更容易一知半解。上手就干。
: 协程好调试是相对什么说的,我觉得是更难调试了。
: ...................
--
FROM 114.241.228.*
光实现单线程的,会被人骂
光实现多线程的,也会被人骂
爱用哪种用哪种,不是更好
【 在 VincentGe 的大作中提到: 】
: 不知道回谁
: 不是CPP协程搞晚了,是CPP协程搞得太复杂了。
: 协程一般实现有两种,一种是类似事件循环机制,这个要求必须在单线程内。一种是任务调度模式,这里执行的单位是一个过程,这个由调度器实现执行,它不一定在一个线程内。
: ...................
--
FROM 114.241.228.*
只是说明您的应用还没到要抠线程切换开销的程度
【 在 hgoldfish 的大作中提到: 】
: 现在操作系统调度 1000 个线程也不是事吧。我最近写的一个 python 就是每个进程给分配 64 个线程的线程池。在一台机器上面跑几百个进程,合计就是 2K-4K 个线程。好像也没啥问题啊,大多数线程都是不被调度的。
:
--
FROM 114.241.228.*
那我说得也没问题,哈哈
其实都说得没问题,都是说的其中一个side
前面那位说线程池里开1万个线程,如果开线程的开销低(类似Erlang的那种)
你说的OS调度1千个线程也很容易。linux老早就有O(1)调度了,后来换了几次。
我说的是即便是有O(1)调度,也有IOCP那些尽量不切换线程的需求。
【 在 hgoldfish 的大作中提到: 】
: 我都用 python 了,你跟我说要扣线程切换。。
:
--
FROM 114.241.228.*
啊,还有人在用32位的系统当服务器吗?哈哈
你这个是具体的应用,ylh1969搞的是一个能跑多个应用的平台,考虑的东西不同
【 在 hgoldfish 的大作中提到: 】
: 看我上面提到的 mmap(MAP_STACK),平时我都是给我的栈设置至少 8MB 的。如果递归调用多,设置成 1GB 都不是事。用到才会真正分配。
: 已经 64 位时代了大哥们!
: 以前你们用 32 位机受到内存空间只有 2GB 的限制用不上这好东东。现在可以普及了。
: ...................
--
FROM 111.199.149.*
您的同一个协程,有跨线程执行吗?
【 在 ylh1969 的大作中提到: 】
: 协程的目的是用一个线程处理多个连接。
: 多线程的目的是利用多核的并行能力。
: 我的目的是二者都要,就是多线程协程。
--
FROM 111.199.149.*
IOCP我用过,你问的两个,答案都是yes
【 在 ylh1969 的大作中提到: 】
: 请教一下,用过MS的IOCP吗?
: 可以一个线程守护很多其他线程提交的完成事件吗?
: 可以多个线程守护这些事件吗?
: ...................
--
FROM 222.131.200.*
收发全双工就是一种场景吧
http是一收一发,其他的协议/场景是可能有收的同时也在发的,一个线程负责收,一个线程负责发。
IOCP是n个线程处理m个连接,以WSASend()/WSARecv()请求的完成结果作为派发单位,派发给对应的线程(优先派发给正在运行的线程,减少线程切换开销),不管是哪个tcp连接的。当然,派发信息里携带的有是哪个tcp连接的context信息的(completion key。overlapped结构也可以扩展一下,存放自己的连接信息)。
【 在 hgoldfish 的大作中提到: 】
: 对。但是我的理解是这个用法多个线程一起服务同一个 socket 没有太大的意义吧?
: 你们是什么场景中,需要由多个线程来处理同一条 TCP 连接的?
:
--
修改:z16166 FROM 222.131.200.*
FROM 222.131.200.*
排队和派发是windows内核实现的,并不开源,哈哈
让chatgpt帮你写个简单的IOCP例子就知道了
或者MS的这个例子
github dot com /microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/netds/winsock/iocp/server/IocpServer.Cpp
【 在 ylh1969 的大作中提到: 】
: 这个正是我想知道的,请详细介绍。
: 138楼我啰嗦了,就是要N个线程守候M个连接的方法。
: 已经提交的handle,送哪儿排队,如何守护?
--
FROM 222.131.200.*