- 主题:gcc是不是symmetric transfer的支持有问题?
唉。你还是没看明白。把这个 Task 改成 User 吧。
void my_coroutine() {
User user;
set_request_user(&user);
send_data_to_remote();
}
这样能理解了吗?这个 user 申请在栈里面,但是指针被传递去了别的地方。
【 在 ylh1969 的大作中提到: 】
: 我不会这么用。
: 我的task里保留的是uc(user context 协程栈)和tc(thread context,线程栈),两套环境的动态资源,想切哪个切哪个。
: 你说的这些,man一下ucontext应该有完整说明。
: ...................
--
FROM 110.84.121.*
有没有云风不重要。关键是你俩的实现是一样的。
【 在 ylh1969 的大作中提到: 】
: 我干完这个事还没有风云呢。
--
FROM 110.84.121.*
如果它也搞动态栈分配,那是英雄所见略同。
定义好资源的生命期,处理好资源的投放和回收,实践证明这个方案是可靠的。
【 在 hgoldfish 的大作中提到: 】
: 有没有云风不重要。关键是你俩的实现是一样的。
:
--
修改:ylh1969 FROM 221.221.55.*
FROM 221.221.55.*
所以你可以看去看别人对这些协程实现的分析啊。
你们俩的实现是一样的,所以对云风的分析也适合你的。
【 在 ylh1969 的大作中提到: 】
: 如果它也搞动态栈分配,那是英雄所见略同。
: 定义好资源的生命期,处理好资源的投放和回收,实践证明这个方案是可靠的。
--
FROM 110.84.121.*
我的还真叫task。但是不会交给搞不清楚的函数去管理它的资源。不会这么用,也不会出现你说的问题。
争论的关键是,我认为,stackless没有实用价值。动态栈分配是个抛砖引玉。你也不要拘泥于stackless,可以思考更好的方法,届时再讨论。
【 在 hgoldfish 的大作中提到: 】
: 唉。你还是没看明白。把这个 Task 改成 User 吧。
: void my_coroutine() {
: User user;
: ...................
--
修改:ylh1969 FROM 221.221.55.*
FROM 221.221.55.*
stackless 和 stackful 有各自的应用场景。那些不重要。
我是跟你说啊,你那种切换栈空间的玩法是很危险的。
性能怎么样啊,能不能实现目标啊这些先别说。。至少先别搞出崩溃啊。
切换栈空间是有机率搞出野指针的啊。
你的框架如果还是决意使用栈空间切换,那就只能给你自己用了。交给第三人使用就容易出错还找不到 BUG 在哪里。
【 在 ylh1969 的大作中提到: 】
: 我的还真叫task。但是不会交给搞不清楚的函数去管理它的资源。不会这么用,也不会出现你说的问题。
: 争论的关键是,我认为,stackless没有实用价值。动态栈分配是个抛砖引玉。你也不要拘泥于stackless,可以思考更好的方法,届时再讨论。
--
修改:hgoldfish FROM 110.84.121.*
FROM 110.84.121.*
初期的调试,确实挺艰苦,尤其是在注册事件和swap期间,
如果swap未完成,事件就触发了,另一个线程抢到了这个task,就乱套了。
所以调试了几个月,才把所有临界区处理好,处理的结果是系统很稳定,可以通过长时间的混合模型压力测试。
长短延时网络,高低网速网络,横跨太平洋的国际网络的压力测试。
【 在 hgoldfish 的大作中提到: 】
: stackless 和 stackful 有各自的应用场景。那些不重要。
: 我是跟你说啊,你那种切换栈空间的玩法是很危险的。
: 性能怎么样啊,能不能实现目标啊这些先别说。。至少先别搞出崩溃啊。
: ...................
--
修改:ylh1969 FROM 221.221.55.*
FROM 221.221.55.*
正因为这个模型调试困难,所以做的是交易中间件框架,类似TUXEDO,比它强。就是RPC服务器,各种应用写应用逻辑就好,作为函数插件插入框架,由客户端调用。框架提供的运行环境可以是各种模式,多线程,进程,协程都可能。同步异步都可能,不需要知道些概念,用就好。
干啥都行,做ATM,售票,社会服务系统。小企业网络业务。。。
【 在 hgoldfish 的大作中提到: 】
: stackless 和 stackful 有各自的应用场景。那些不重要。
: 我是跟你说啊,你那种切换栈空间的玩法是很危险的。
: 性能怎么样啊,能不能实现目标啊这些先别说。。至少先别搞出崩溃啊。
: ...................
--
修改:ylh1969 FROM 221.221.55.*
FROM 221.221.55.*
野指针是不可能出现的。
再谈效率,就单一任务而言,协程效率肯定比同步IO低得多,事件激发后就是一个栈分配,经过一系列判断才swap到应用函数,当他使用IO时会被yield,线程会被剥夺,被别人加塞,resume还要干一大堆事,所有过程还有一大堆日志。。。。。但是,必须这么做,不然,你占着茅坑不拉屎,系统吞吐量就完蛋了。
【 在 hgoldfish 的大作中提到: 】
: stackless 和 stackful 有各自的应用场景。那些不重要。
: 我是跟你说啊,你那种切换栈空间的玩法是很危险的。
: 性能怎么样啊,能不能实现目标啊这些先别说。。至少先别搞出崩溃啊。
: ...................
--
FROM 221.221.55.*
那几个函数只管ucontext里的栈,不管来自哪里。
【 在 hgoldfish 的大作中提到: 】
: 堆啊!
: 那几个函数只管栈,不管堆的。
: ucontext 在现在 63+1 位时代是可用的没错,但你切换栈内存的做法会出问题的。
: ...................
--
FROM 221.221.55.*