- 主题:光有协程不够吧?
那你去踩踩坑就知道了。它那套太简陋了,必然天坑无数。
libco 太早了太原始了,你如果感兴趣的话,应该去看看魅族家的 libgo.
【 在 GoGoRoger (GoGoRoger) 的大作中提到: 】
: 哦哦,我还以为什么呐,这些对我不是什么大问题。
: 发自「今日水木 on Mi Note 3」
--
修改:hgoldfish FROM 125.78.66.*
FROM 125.78.66.*
Libgo我也了解过,据说更好。我就是学习一下协程的概念,也没机会用。
【 在 hgoldfish 的大作中提到: 】
:
: 那你去踩踩坑就知道了。它那套太简陋了,必然天坑无数。
:
: libco 太早了太原始了,你如果感兴趣的话,应该去看看魅族家的 libgo.
:
: --
: 灭绝人性啊
:
:
发自「今日水木 on Mi Note 3」
--
FROM 106.38.133.*
cppcoro啊,我觉得很强大。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 是的。。所以我才说 c++20 的协程大家先别用。这是给第三方库的作者准备的。
: 哪位有兴趣的话现在就动手搞一个 c++20 协程库。刚好等 c++23 出来的时候成熟,说不定能扬名立万。。
--
FROM 158.140.1.*
【 在 GoGoRoger 的大作中提到: 】
: 哦哦,我还以为什么呐,这些对我不是什么大问题。
: 发自「今日水木 on Mi Note 3」
重载sleep();
里边有个放yield的函数指针,平时空。
此时的sleep与原来相同。
通过set_yield(),设定yield函数,此时sleep函数就变成协程函数。
协程操作任何的失败,都回到原有的sleep。
#include <sys/socket.h>
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#include <sc.h>
#ifndef MIN
#define MIN(a,b) ((a)<(b))?(a):(b)
#endif
static T_YIELD yield=NULL;
T_YIELD get_yield()
{
return yield;
}
T_YIELD set_yield(T_YIELD new_yield)
{
T_YIELD oldyield=yield;
yield=new_yield;
return oldyield;
}
--
修改:ylh1969 FROM 221.221.53.*
FROM 221.221.53.*
那还不如用rust
【 在 hgoldfish 的大作中提到: 】
: 是的。。所以我才说 c++20 的协程大家先别用。这是给第三方库的作者准备的。
: 哪位有兴趣的话现在就动手搞一个 c++20 协程库。刚好等 c++23 出来的时候成熟,说不定能扬名立万。。
:
--
FROM 123.112.23.*
qemu代码里面多年前自己就实现了完整的coroutine,目的就是为了虚拟机镜像读写。
【 在 GoGoRoger 的大作中提到: 】
: 还得有调度器,并且配合非阻塞的api调用,我看腾讯就重载了io和同步的函数。
:
: 想一想就头大。
: ....................
--
FROM 183.37.161.*
c 语言实现 coroutine 最简单了。两三个函数就搞定了。linux 都自带了 swapcontext
【 在 warboss (warboss) 的大作中提到: 】
: qemu代码里面多年前自己就实现了完整的coroutine,目的就是为了虚拟机镜像读写。
--
FROM 112.47.122.*
qemu自己实现了协程调度那套。 qemu的io支持pthread gthread coroutine几种,编译时可配置。 协程的性能比另两个好7 8倍p
【 在 hgoldfish 的大作中提到: 】
: c 语言实现 coroutine 最简单了。两三个函数就搞定了。linux 都自带了 swapcontext
:
: 【 在 warboss (warboss) 的大作中提到: 】
: ....................
--
FROM 183.37.161.*
超级正确。
【 在 hgoldfish 的大作中提到: 】
: c 语言实现 coroutine 最简单了。两三个函数就搞定了。linux 都自带了 swapcontext
:
--
FROM 221.221.53.*
【 在 warboss 的大作中提到: 】
: qemu代码里面多年前自己就实现了完整的coroutine,目的就是为了虚拟机镜像读写。
:
: :
qemu的后端io调度器是什么,epoll不支持文件io
--
FROM 223.160.128.*