forked from swiftlang/swift
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasync_taskgroup_is_empty.swift
52 lines (41 loc) · 1.26 KB
/
async_taskgroup_is_empty.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// RUN: %target-run-simple-swift( -target %target-swift-5.1-abi-triple %import-libdispatch -parse-as-library) | %FileCheck %s
// REQUIRES: executable_test
// REQUIRES: concurrency
// REQUIRES: libdispatch
// rdar://76038845
// REQUIRES: concurrency_runtime
// UNSUPPORTED: back_deployment_runtime
import Dispatch
@available(SwiftStdlib 5.1,*)
func asyncEcho(_ value:Int)async->Int{
value
}
@available(SwiftStdlib 5.1,*)
func test_taskGroup_isEmpty()async{
print("before all")
letresult=awaitwithTaskGroup(of:Int.self, returning:Int.self){ group in
// CHECK: before add: isEmpty=true
print("before add: isEmpty=\(group.isEmpty)")
group.async{
awaitTask.sleep(2_000_000_000)
returnawaitasyncEcho(1)
}
// CHECK: while add running, outside: isEmpty=false
print("while add running, outside: isEmpty=\(group.isEmpty)")
// CHECK: next: 1
whilelet value =try!await group.next(){
print("next: \(value)")
}
// CHECK: after draining tasks: isEmpty=true
print("after draining tasks: isEmpty=\(group.isEmpty)")
return42
}
// CHECK: result: 42
print("result: \(result)")
}
@available(SwiftStdlib 5.1,*)
@mainstructMain{
staticfunc main()async{
awaittest_taskGroup_isEmpty()
}
}