Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
fsharp
提交
6230834b
F
fsharp
项目概览
dotNET Platform
/
fsharp
11 个月 前同步成功
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fsharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
6230834b
编写于
10月 30, 2019
作者:
P
Phillip Carter
提交者:
GitHub
10月 30, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use framework Queue (#7709)
上级
2ce2c9e7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
2 addition
and
43 deletion
+2
-43
src/fsharp/FSharp.Core/mailbox.fs
src/fsharp/FSharp.Core/mailbox.fs
+2
-43
未找到文件。
src/fsharp/FSharp.Core/mailbox.fs
浏览文件 @
6230834b
...
...
@@ -4,6 +4,7 @@ namespace Microsoft.FSharp.Control
open
System
open
System
.
Threading
open
System
.
Collections
.
Generic
open
Microsoft
.
FSharp
.
Core
open
Microsoft
.
FSharp
.
Core
.
LanguagePrimitives
.
IntrinsicOperators
open
Microsoft
.
FSharp
.
Control
...
...
@@ -11,48 +12,6 @@ namespace Microsoft.FSharp.Control
open
Microsoft
.
FSharp
.
Control
.
AsyncPrimitives
open
Microsoft
.
FSharp
.
Collections
/// We use our own internal implementation of queues to avoid a dependency on System.dll
type
Queue
<
'
T
>()
=
let
mutable
array
=
[|
|]
let
mutable
head
=
0
let
mutable
size
=
0
let
mutable
tail
=
0
let
SetCapacity
capacity
=
let
destinationArray
=
Array
.
zeroCreate
capacity
if
(
size
>
0
)
then
if
(
head
<
tail
)
then
Array
.
Copy
(
array
,
head
,
destinationArray
,
0
,
size
)
else
Array
.
Copy
(
array
,
head
,
destinationArray
,
0
,
array
.
Length
-
head
)
Array
.
Copy
(
array
,
0
,
destinationArray
,
array
.
Length
-
head
,
tail
)
array
<-
destinationArray
head
<-
0
tail
<-
if
(
size
=
capacity
)
then
0
else
size
member
x
.
Dequeue
()
=
if
(
size
=
0
)
then
failwith
"Dequeue"
let
local
=
array
.[
head
]
array
.[
head
]
<-
Unchecked
.
defaultof
<
'
T
>
head
<-
(
head
+
1
)
%
array
.
Length
size
<-
size
-
1
local
member
this
.
Enqueue
item
=
if
(
size
=
array
.
Length
)
then
let
capacity
=
int
((
int64
array
.
Length
*
200
L
)
/
100
L
)
let
capacity
=
max
capacity
(
array
.
Length
+
4
)
SetCapacity
capacity
array
.[
tail
]
<-
item
tail
<-
(
tail
+
1
)
%
array
.
Length
size
<-
size
+
1
member
x
.
Count
=
size
module
AsyncHelpers
=
let
awaitEither
a1
a2
=
...
...
@@ -93,7 +52,7 @@ namespace Microsoft.FSharp.Control
[<
AutoSerializable
(
false
)>]
type
Mailbox
<
'
Msg
>(
cancellationSupported
:
bool
)
=
let
mutable
inboxStore
=
null
let
mutable
arrivals
=
new
Queue
<
'
Msg
>()
let
arrivals
=
Queue
<
'
Msg
>()
let
syncRoot
=
arrivals
// Control elements indicating the state of the reader. When the reader is "blocked" at an
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录