编辑“︁
Future与promise
”︁(章节)
跳转到导航
跳转到搜索
脚本错误:没有“Mainspace editnotice”这个模块。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
任何侵權內容
將會刪除 | 百科內容須附有來源,以
供查證
| 維基百科內容均容許他人編輯、使用和重製 | 參閱
繁簡
和
地區詞處理
指引。
反垃圾检查。
不要
加入这个!
==有特定线程的future== 某些语言比如{{le|Alice语言|Alice (programming language)|Alice ML}},定义的future可以关联着计算这个future值的特定线程<ref name="Alice ML future"/>。这种计算可以通过<code>spawn exp</code>,在创建future时[[及早求值|及早地]]开始;或者通过<code>lazy exp</code>,在首次需要其值时[[惰性求值|懒惰地]]开始。在延迟计算的意义上,懒惰的future类似于thunk 。 Alice ML还支持可由任何线程解决的future,并称谓它们为“promised future”<ref name="Alice ML promise"/>。这里的promise是给future的显式把柄(handle),它通过多态库函数<code>Promise.promise</code>来创建,所有promise都关联的一个future,创建一个新promise也就创建了一个新鲜的future;这个future通过<code>Promise.future</code>来提取,并且通过显式的应用<code>Promise.fulfill</code>于对应的promise来消除,即在全局中将这个future替代为一个值。Alice ML不支持promise流水线,转而对于future,包括关联着promise的future,流水线是自然而然地发生的。 在没有特定线程的future(如Alice ML所提供的)中,通过在创建这个future的同时创建一个计算这个值的线程,可以直接实现及早求值的有特定线程的future。在这种情况下,最好将只读视图返回给客户,以便仅让新创建的线程能够解决这个future。 要在没有特定线程的future中,实现隐式惰性的有特定线程的future,需要一种机制来确定何时首次需要future的值(例如,Oz中的<code>WaitNeeded</code>构造<ref>{{citation |url= http://www.mozart-oz.org/home/doc/base/node13.html |title= WaitNeeded |publisher= Mozart Oz |access-date= 2018-12-31 |archive-url= https://web.archive.org/web/20130517004703/http://www.mozart-oz.org/home/doc/base/node13.html |archive-date= 2013-05-17 |dead-url= yes }}</ref> )。 如果所有值都是对象,那么有实现透明转发对象的能力就足够了,因为发送给转发器的首条消息表明需要future的值。 假定系统支持消息传递,在有特定线程的future中,通过让解决线程向future自己的线程发送消息,可以实现没有特定线程的future。然而这可能被视为不必要的复杂性。在基于线程的编程语言中,最具表现力的方法似乎是提供一种混合:没有特定线程的future、只读视图、以及要么有<code>WaitNeeded</code>构造要么支持透明转发。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
分类索引
特色内容
新闻动态
随机页面
联络我们
关于
资助维基百科
interaction
帮助
社群首页
introduction
互助客栈
IRC即时聊天
最近更改
特殊页面
工具
链入页面
相关更改
特殊页面
页面信息