Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
30b883b9
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
30b883b9
编写于
5月 06, 2015
作者:
J
John Gallagher
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make RwLock::try_write try to obtain a write lock
上级
7bd71637
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
2 deletion
+19
-2
src/libstd/sync/rwlock.rs
src/libstd/sync/rwlock.rs
+19
-2
未找到文件。
src/libstd/sync/rwlock.rs
浏览文件 @
30b883b9
...
...
@@ -232,7 +232,7 @@ pub fn write(&self) -> LockResult<RwLockWriteGuard<T>> {
#[inline]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
fn
try_write
(
&
self
)
->
TryLockResult
<
RwLockWriteGuard
<
T
>>
{
if
unsafe
{
self
.inner.lock
.try_
read
()
}
{
if
unsafe
{
self
.inner.lock
.try_
write
()
}
{
Ok
(
try!
(
RwLockWriteGuard
::
new
(
&*
self
.inner
,
&
self
.data
)))
}
else
{
Err
(
TryLockError
::
WouldBlock
)
...
...
@@ -413,7 +413,7 @@ mod tests {
use
rand
::{
self
,
Rng
};
use
sync
::
mpsc
::
channel
;
use
thread
;
use
sync
::{
Arc
,
RwLock
,
StaticRwLock
,
RW_LOCK_INIT
};
use
sync
::{
Arc
,
RwLock
,
StaticRwLock
,
TryLockError
,
RW_LOCK_INIT
};
#[test]
fn
smoke
()
{
...
...
@@ -577,4 +577,21 @@ fn test_rwlock_unsized() {
let
comp
:
&
[
i32
]
=
&
[
4
,
2
,
5
];
assert_eq!
(
&*
rw
.read
()
.unwrap
(),
comp
);
}
#[test]
fn
test_rwlock_try_write
()
{
use
mem
::
drop
;
let
lock
=
RwLock
::
new
(
0
isize
);
let
read_guard
=
lock
.read
()
.unwrap
();
let
write_result
=
lock
.try_write
();
match
write_result
{
Err
(
TryLockError
::
WouldBlock
)
=>
(),
Ok
(
_
)
=>
assert
!
(
false
,
"try_write should not succeed while read_guard is in scope"
),
Err
(
_
)
=>
assert
!
(
false
,
"unexpected error"
),
}
drop
(
read_guard
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录