论坛首页 综合技术论坛

关于Erlang中receive-end. 结构的疑问

浏览 8020 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-24  
举一个最简单的例子:

loop() ->
	receive
		{From, Msg} -> 
			From ! {self(), Msg},
			loop();
		stop ->
			true
	end.


关于receive-end.结构,是不是如果这个结构所在进程的输入消息队列没有任何消息,则会一直阻塞,直到队列有一条消息,则会soft realtime 被唤醒,然后从队列取出消息,进行匹配,如果匹配到某一模式,则从输入队列删除消息,执行相应的actions,最后结束;如果没有匹配到任何模式,直接退出。是不是并不会递归从队列取消息。但是由于一般的写法,以及以上的例子,都使用到了函数递归调用,所以loop()函数才会循环消费消息,阻塞等待消息,直到遇到stop atom时退出函数。

再很好奇的问一下,他函数递归调用是怎么样的机制,按照正常的c栈,可能早就栈溢出了,还有Erlang中的函数递归调用退出,是不是也是一层一层。描述的不清楚,还请见谅。

哪位大大过来讲解一下,小弟我先谢过了
   发表时间:2007-03-24  
好像我关于receive-end.结构的描述是对的。Selection of any message 好像说的就是这个意思。俺不自信

关于函数递归调用的谁能讲讲
0 请登录后投票
   发表时间:2007-03-24  
尾递归可以被编译器直接优化成循环,所以你就当他是循环好了
0 请登录后投票
   发表时间:2007-03-24  
尾递归T1原来有讲过,你可以搜索一下帖子.
0 请登录后投票
   发表时间:2007-03-24  
simohayha 写道
尾递归T1原来有讲过,你可以搜索一下帖子.


好像没有T1这个id,然后我查找关键字 尾递归,怎么看不到查询出来的结果,只能看到 1 2 3 三页 

0 请登录后投票
   发表时间:2007-03-24  
又google javaeye一把 ,找到一篇楼上simohayha大大的文章 主题:  

python中是否可以实现'tail-call elimination'的优化  http://www.iteye.com/topic/54253

多谢啦
0 请登录后投票
   发表时间:2007-03-24  
又链到一篇文章 -主题:   [探讨]通过实例再讨论TDD http://www.iteye.com/post/32289

里面有个Trustno1讲到递归是不是就是T1,先做个标记,吃饭先。谢谢楼上的simohayha
0 请登录后投票
   发表时间:2007-03-24  
Erlang 写道
又链到一篇文章 -主题:   [探讨]通过实例再讨论TDD http://www.iteye.com/post/32289

里面有个Trustno1讲到递归是不是就是T1,先做个标记,吃饭先。谢谢楼上的simohayha


呵呵,T1就是 Trustno1,我说的就是 TDD这个帖子.
0 请登录后投票
   发表时间:2007-03-24  
hurricane1026 写道
不如看sicp,sicp讲得更好。


sicp是不是就是 http://mitpress.mit.edu/sicp/ 中提到的Structure and Interpretation of Computer Programs? sicp中那一章讲到什么了内容?
0 请登录后投票
   发表时间:2007-03-24  
simohayha 写道
Erlang 写道
又链到一篇文章 -主题:   [探讨]通过实例再讨论TDD http://www.iteye.com/post/32289

里面有个Trustno1讲到递归是不是就是T1,先做个标记,吃饭先。谢谢楼上的simohayha


呵呵,T1就是 Trustno1,我说的就是 TDD这个帖子.

那个帖子看完了,得出的结论就是要学好编译原理才能弄明白尾递归。编译原理俺没学好:(

另外,里面关于TDD见解挺独到的。刚才俺得到了俺对TDD的看法:就是TDD的结果可能会影响你的设计,促使你重构,优化算法;但他并不能帮你做任何一个设计,也不能教你任何的重构,或者推导出算法等等。

TDD方法学最重要的两点就是:
1,要求程序的任何一个单元、任何一个模块或者任何一个部分或者整个程序所承担的功能、非功能要求都被独立测试;
2,要求程序的任何一个单元、任何一个模块或者任何一个部分或者整个程序所承担的功能、非功能要求在任何一个时刻都可以被独立测试,并且得出其是否正确的结论。

谁能推荐几本简单明了又经典的编译原理书?先谢过了
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics