Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
106385cb
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
106385cb
编写于
1月 08, 2012
作者:
N
Niko Matsakis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make spawned fn copy mode so that bare fns can be used
上级
7d3f892f
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
36 addition
and
2 deletion
+36
-2
src/libcore/task.rs
src/libcore/task.rs
+25
-2
src/test/run-fail/task-spawn-barefn.rs
src/test/run-fail/task-spawn-barefn.rs
+11
-0
未找到文件。
src/libcore/task.rs
浏览文件 @
106385cb
...
...
@@ -110,7 +110,7 @@
A handle to the new task
*/
fn
spawn
(
-
f
:
sendfn
())
->
task
{
fn
spawn
(
+
f
:
sendfn
())
->
task
{
spawn_inner
(
f
,
none
)
}
...
...
@@ -139,7 +139,7 @@ fn spawn_inner(-f: sendfn(),
*/
type
joinable_task
=
(
task
,
comm
::
port
<
task_notification
>
);
fn
spawn_joinable
(
-
f
:
sendfn
())
->
joinable_task
{
fn
spawn_joinable
(
+
f
:
sendfn
())
->
joinable_task
{
let
notify_port
=
comm
::
port
();
let
notify_chan
=
comm
::
chan
(
notify_port
);
let
task
=
spawn_inner
(
f
,
some
(
notify_chan
));
...
...
@@ -189,6 +189,29 @@ fn spawn_joinable(-f: sendfn()) -> joinable_task {
exit
(
task
,
task_result
);
}
/*
type connected_fn<ToCh, FrCh> = sendfn(comm::chan<FrCh>, comm::port<ToCh>);
type connected_task<ToCh, FrCh> = {
port: comm::port<FrCh>,
chan: comm::chan<ToCh>,
task: task
};
fn spawn_connected<ToCh:send, FrCh:send>(f: connected_fn<ToCh, FrCh>)
-> connected_fn {
let from_child_port = comm::port<FrCh>();
let from_child_chan = comm::chan(from_child_port);
let get_to_child_port = comm::port<comm::chan<ToCh>>();
let get_to_child_chan = comm::chan(to_child_port);
let child_task = spawn(sendfn[move f]() {
let to_child_port = comm::port<ToCh>();
comm::send(get_to_child_chan, to_child_port);
f(from_child_chan, to_child_port);
});
let to_child_chan = comm::recv(get_out);
ret {port: from_child_port, chan: to_child_chan, task: child_task};
}
*/
/* Section: Operations */
/*
...
...
src/test/run-fail/task-spawn-barefn.rs
0 → 100644
浏览文件 @
106385cb
// error-pattern:Ensure that the child task runs by failing
fn
main
()
{
// the purpose of this test is to make sure that task::spawn()
// works when provided with a bare function:
task
::
spawn
(
startfn
);
}
fn
startfn
()
{
assert
str
::
is_empty
(
"Ensure that the child task runs by failing"
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录