@@ -15,12 +15,14 @@ import Darwin
15
15
import Glibc
16
16
#elseif canImport(WinSDK)
17
17
import WinSDK
18
+ #elseif canImport(Bionic)
19
+ import Bionic
18
20
#endif
19
21
20
22
internal struct Lock {
21
23
#if canImport(Darwin)
22
24
typealias Primitive = os_unfair_lock
23
- #elseif canImport(Glibc)
25
+ #elseif canImport(Glibc) || canImport(Bionic)
24
26
typealias Primitive = pthread_mutex_t
25
27
#elseif canImport(WinSDK)
26
28
typealias Primitive = SRWLOCK
@@ -38,7 +40,7 @@ internal struct Lock {
38
40
fileprivate static func initialize( _ platformLock: PlatformLock ) {
39
41
#if canImport(Darwin)
40
42
platformLock. initialize ( to: os_unfair_lock ( ) )
41
- #elseif canImport(Glibc)
43
+ #elseif canImport(Glibc) || canImport(Bionic)
42
44
let result = pthread_mutex_init ( platformLock, nil )
43
45
precondition ( result == 0 , " pthread_mutex_init failed " )
44
46
#elseif canImport(WinSDK)
@@ -47,7 +49,7 @@ internal struct Lock {
47
49
}
48
50
49
51
fileprivate static func deinitialize( _ platformLock: PlatformLock ) {
50
- #if canImport(Glibc)
52
+ #if canImport(Glibc) || canImport(Bionic)
51
53
let result = pthread_mutex_destroy ( platformLock)
52
54
precondition ( result == 0 , " pthread_mutex_destroy failed " )
53
55
#endif
@@ -57,7 +59,7 @@ internal struct Lock {
57
59
fileprivate static func lock( _ platformLock: PlatformLock ) {
58
60
#if canImport(Darwin)
59
61
os_unfair_lock_lock ( platformLock)
60
- #elseif canImport(Glibc)
62
+ #elseif canImport(Glibc) || canImport(Bionic)
61
63
pthread_mutex_lock ( platformLock)
62
64
#elseif canImport(WinSDK)
63
65
AcquireSRWLockExclusive ( platformLock)
@@ -67,7 +69,7 @@ internal struct Lock {
67
69
fileprivate static func unlock( _ platformLock: PlatformLock ) {
68
70
#if canImport(Darwin)
69
71
os_unfair_lock_unlock ( platformLock)
70
- #elseif canImport(Glibc)
72
+ #elseif canImport(Glibc) || canImport(Bionic)
71
73
let result = pthread_mutex_unlock ( platformLock)
72
74
precondition ( result == 0 , " pthread_mutex_unlock failed " )
73
75
#elseif canImport(WinSDK)
0 commit comments