Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
f59fcd5d
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,发现更多精彩内容 >>
提交
f59fcd5d
编写于
5月 19, 2013
作者:
B
Brian Anderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core::rt: Store Task as a ~ pointer
上级
43c6f32e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
11 addition
and
11 deletion
+11
-11
src/libcore/rt/sched.rs
src/libcore/rt/sched.rs
+3
-3
src/libcore/rt/task.rs
src/libcore/rt/task.rs
+2
-2
src/libcore/rt/test.rs
src/libcore/rt/test.rs
+6
-6
未找到文件。
src/libcore/rt/sched.rs
浏览文件 @
f59fcd5d
...
...
@@ -350,16 +350,16 @@ pub struct Coroutine {
/// the task is dead
priv
saved_context
:
Context
,
/// The heap, GC, unwinding, local storage, logging
task
:
Task
task
:
~
Task
}
pub
impl
Coroutine
{
fn
new
(
stack_pool
:
&
mut
StackPool
,
start
:
~
fn
())
->
Coroutine
{
Coroutine
::
with_task
(
stack_pool
,
Task
::
new
(),
start
)
Coroutine
::
with_task
(
stack_pool
,
~
Task
::
new
(),
start
)
}
fn
with_task
(
stack_pool
:
&
mut
StackPool
,
task
:
Task
,
task
:
~
Task
,
start
:
~
fn
())
->
Coroutine
{
let
start
=
Coroutine
::
build_start_wrapper
(
start
);
let
mut
stack
=
stack_pool
.take_segment
(
MIN_STACK_SIZE
);
...
...
src/libcore/rt/task.rs
浏览文件 @
f59fcd5d
...
...
@@ -155,7 +155,7 @@ pub fn borrow_local_task(f: &fn(&mut Task)) {
do
local_sched
::
borrow
|
sched
|
{
match
sched
.current_task
{
Some
(
~
ref
mut
task
)
=>
{
f
(
&
mut
task
.task
)
f
(
&
mut
*
task
.task
)
}
None
=>
{
fail
!
(
"no local services for schedulers yet"
)
...
...
@@ -167,7 +167,7 @@ pub fn borrow_local_task(f: &fn(&mut Task)) {
pub
unsafe
fn
unsafe_borrow_local_task
()
->
*
mut
Task
{
match
(
*
local_sched
::
unsafe_borrow
())
.current_task
{
Some
(
~
ref
mut
task
)
=>
{
let
s
:
*
mut
Task
=
&
mut
task
.task
;
let
s
:
*
mut
Task
=
&
mut
*
task
.task
;
return
s
;
}
None
=>
{
...
...
src/libcore/rt/test.rs
浏览文件 @
f59fcd5d
...
...
@@ -29,7 +29,7 @@ pub fn run_in_newsched_task(f: ~fn()) {
do
run_in_bare_thread
{
let
mut
sched
=
~
UvEventLoop
::
new_scheduler
();
let
task
=
~
Coroutine
::
with_task
(
&
mut
sched
.stack_pool
,
Task
::
without_unwinding
(),
~
Task
::
without_unwinding
(),
f
.take
());
sched
.enqueue_task
(
task
);
sched
.run
();
...
...
@@ -42,7 +42,7 @@ pub fn spawntask(f: ~fn()) {
let
mut
sched
=
local_sched
::
take
();
let
task
=
~
Coroutine
::
with_task
(
&
mut
sched
.stack_pool
,
Task
::
without_unwinding
(),
~
Task
::
without_unwinding
(),
f
);
do
sched
.switch_running_tasks_and_then
(
task
)
|
task
|
{
let
task
=
Cell
(
task
);
...
...
@@ -57,7 +57,7 @@ pub fn spawntask_immediately(f: ~fn()) {
let
mut
sched
=
local_sched
::
take
();
let
task
=
~
Coroutine
::
with_task
(
&
mut
sched
.stack_pool
,
Task
::
without_unwinding
(),
~
Task
::
without_unwinding
(),
f
);
do
sched
.switch_running_tasks_and_then
(
task
)
|
task
|
{
let
task
=
Cell
(
task
);
...
...
@@ -73,7 +73,7 @@ pub fn spawntask_later(f: ~fn()) {
let
mut
sched
=
local_sched
::
take
();
let
task
=
~
Coroutine
::
with_task
(
&
mut
sched
.stack_pool
,
Task
::
without_unwinding
(),
~
Task
::
without_unwinding
(),
f
);
sched
.enqueue_task
(
task
);
...
...
@@ -90,7 +90,7 @@ pub fn spawntask_random(f: ~fn()) {
let
mut
sched
=
local_sched
::
take
();
let
task
=
~
Coroutine
::
with_task
(
&
mut
sched
.stack_pool
,
Task
::
without_unwinding
(),
~
Task
::
without_unwinding
(),
f
);
if
run_now
{
...
...
@@ -156,7 +156,7 @@ pub fn spawntask_thread(f: ~fn()) -> Thread {
let
thread
=
do
Thread
::
start
{
let
mut
sched
=
~
UvEventLoop
::
new_scheduler
();
let
task
=
~
Coroutine
::
with_task
(
&
mut
sched
.stack_pool
,
Task
::
without_unwinding
(),
~
Task
::
without_unwinding
(),
f
.take
());
sched
.enqueue_task
(
task
);
sched
.run
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录