搜索
查看: 8481|回复: 4

yield和thread区别

  [复制链接]

3

主题

13

帖子

72

积分

一级会员

Rank: 2

积分
72
发表于 2011-11-2 13:34:30 | 显示全部楼层 |阅读模式
//纤程简单示例
io.open()

func =
function(n){
   
for(i=1;n;1){
        io.print(
"我正在循环",i)
        fiber.yield (123)
//休眼,并将控制权与参数返回给调用者
    }   
}

var task = fiber.create(func)

//运行纤程
var ret = fiber.resume (task,12)
ret = fiber.resume (task,12)
ret = fiber.resume (task,12)
io.print( fiber.status(task) == fiber.status.suspended )

execute("pause") //按任意键继续
io.close();//关闭控制台


-----------------------------------------------------------------------
yield函数的说明,说传入的参数将作为下次调用resume的参数,但是fiber(123)的时候我发现,123根本没有用到,而且不清楚,具体应用的时候线程和纤程有什么区别,感觉都差不多,具体差别
回复

使用道具 举报

3

主题

163

帖子

918

积分

荣誉会员

Rank: 8Rank: 8

积分
918
发表于 2011-11-2 13:45:46 | 显示全部楼层

fiber是个名字空间,不是函数,你写fiber(123)是错的。 而且123是个常量,怎么会跟其他的什么参数返回值发生关系。 返回值 = fiber.

fiber是个名字空间,不是函数,你写fiber(123)是错的。
而且123是个常量,怎么会跟其他的什么参数返回值发生关系。

返回值 = fiber.yield (传入参数)
返回值 = fiber.resume(传入参数)
这两个函数是相互配对的,就好像两个人打球,一个发球,一个就接球。
所以在一个函数里传入参数,就会变成另一个函数的返回值。

但是你这里根本就没有接收返回值,传入的参数就忽略了不起作用。
等于只有发球的没有接球的。

回复

使用道具 举报

3

主题

163

帖子

918

积分

荣誉会员

Rank: 8Rank: 8

积分
918
发表于 2011-11-2 13:50:42 | 显示全部楼层

线程就好象汽车, 可以同时发动多部汽车,有的跑的快,有的跑的慢,各跑各的。 纤程就好象汽车里的人,他们可以各干各的事,但是必须呆在同一部车上。 大家只

线程就好像汽车,
可以同时发动多部汽车,有的跑的快,有的跑的慢,各跑各的。

纤程就好像汽车里的人,他们可以各干各的事,但是必须呆在同一部车上。
大家只能有一个方向,一个步调,不可能一个人先到目的地,一个人后到目的地。
驾驶员的位置可以换人,可以调整方向,可以向南开,向北开,但是你不能同时有多个驾驶员,你也不可能把一部汽车同时即往北开,又往南开。

进程包含线程,线程又包含线程,他们是从上而下的关系,不是并等的关系。
进程就好像汽车公司,线程就好像汽车,纤程就好像汽车里的人

点评

真棒: 5.0
真棒: 5
  发表于 2011-11-2 14:06
回复

使用道具 举报

3

主题

13

帖子

72

积分

一级会员

Rank: 2

积分
72
 楼主| 发表于 2011-11-2 13:53:21 | 显示全部楼层

[quote][size=2][color=#999999]疯狂的筷子 发表于 2011-11-2 13:45[/color] [url=forum.php?m

疯狂的筷子 发表于 2011-11-2 13:45
飞机和坦克其实也差不多,都是交通工具.
程序这个东西,纯理论分析只会差之毫厘,谬以千里。

你的意思是,yeild(参数) 如果想发挥作用就得 return fiber.yield(123)这么用吗?  暂停且返回123?

点评

fiber.yield不需要用return,而是要写 返回值 = fiber.yield(123)  发表于 2011-11-2 19:01
回复

使用道具 举报

52

主题

1340

帖子

7326

积分

荣誉会员

Rank: 8Rank: 8

积分
7326
发表于 2011-11-2 14:00:20 | 显示全部楼层

[url]http://bbs.aardio.com/thread-2527-1-1.html[/url] 看看这个,楼主好像与我以前一样,对这个迷糊,想想好

http://bbs.aardio.com/thread-2527-1-1.html
看看这个,楼主好像与我以前一样,对这个迷糊,想想好像用不到这个东东,也没研究它了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-18 02:16 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表