- 主题:std::async() 为何要有 deferred 这种模式
有 BUG 就修。
【 在 z16166 的大作中提到: 】
: 同样可能存在问题,比如某人写的异步任务代码在cancel/timeout的实现上有bug,一样可能会卡死所有人的任务
: 这不能赖线程池的库。
:
--
FROM 218.76.62.*
线程池的异步操作,是个大问题,提供的半成品异步工具,协调起来很困难。
我有线程池,你为啥要开新的,用我的线程不行吗?
【 在 speedboy2998 的大作中提到: 】
: 各个平台实现不一样。。
: 好像 WINDOWS 还是 LINUX 平台下,每次调用都会开启一个线程。。
: 如果是一个执行频繁并且执行过程比较长的调用,会导致最后有几千个线程。
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
线程池,异步,协程,我干成了,有体会,可以交流。
我猜你在做一个大并发的服务器。
这种东西是以线程池为基础的,以事件机制作为调度器,我是用epoll,所有工作线程都在等待epoll分配工作。
当一个事件被激活,就有一个线程抓住了这个任务。之后需要IO。同步呢?异步呢?都有需求。这个线程就需要调用一些工具来解决IO问题。因为已经是在线程里了,所以这个工具不应该再管线程的事,这种多管闲事的工具就别用了,找一个纯粹干活的就行。
我用过回调函数的异步,最后还是用协程异步比较好,可以以同步的方式进行异步操作,IO需要等待时就yield,线程跑掉为别人服务,这个任务挂起在epoll,直到具备IO条件被激活。
https://www.newsmth.net/nForum/#!article/CPlusPlus/433004
这个帖对其中存在的问题有详细讨论。
【 在 speedboy2998 的大作中提到: 】
: 下面是一个线程池。
:
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*