@@ -19,14 +19,16 @@ import Musl
19
19
import WinSDK
20
20
#elseif canImport(Bionic)
21
21
import Bionic
22
+ #elseif canImport(wasi_pthread)
23
+ import wasi_pthread
22
24
#else
23
25
#error("Unsupported platform")
24
26
#endif
25
27
26
28
internal struct Lock {
27
29
#if canImport(Darwin)
28
30
typealias Primitive = os_unfair_lock
29
- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
31
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
30
32
typealias Primitive = pthread_mutex_t
31
33
#elseif canImport(WinSDK)
32
34
typealias Primitive = SRWLOCK
@@ -44,7 +46,7 @@ internal struct Lock {
44
46
fileprivate static func initialize( _ platformLock: PlatformLock ) {
45
47
#if canImport(Darwin)
46
48
platformLock. initialize ( to: os_unfair_lock ( ) )
47
- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
49
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
48
50
let result = pthread_mutex_init ( platformLock, nil )
49
51
precondition ( result == 0 , " pthread_mutex_init failed " )
50
52
#elseif canImport(WinSDK)
@@ -55,7 +57,7 @@ internal struct Lock {
55
57
}
56
58
57
59
fileprivate static func deinitialize( _ platformLock: PlatformLock ) {
58
- #if canImport(Glibc) || canImport(Musl) || canImport(Bionic)
60
+ #if canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
59
61
let result = pthread_mutex_destroy ( platformLock)
60
62
precondition ( result == 0 , " pthread_mutex_destroy failed " )
61
63
#endif
@@ -65,7 +67,7 @@ internal struct Lock {
65
67
fileprivate static func lock( _ platformLock: PlatformLock ) {
66
68
#if canImport(Darwin)
67
69
os_unfair_lock_lock ( platformLock)
68
- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
70
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
69
71
pthread_mutex_lock ( platformLock)
70
72
#elseif canImport(WinSDK)
71
73
AcquireSRWLockExclusive ( platformLock)
@@ -77,7 +79,7 @@ internal struct Lock {
77
79
fileprivate static func unlock( _ platformLock: PlatformLock ) {
78
80
#if canImport(Darwin)
79
81
os_unfair_lock_unlock ( platformLock)
80
- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
82
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
81
83
let result = pthread_mutex_unlock ( platformLock)
82
84
precondition ( result == 0 , " pthread_mutex_unlock failed " )
83
85
#elseif canImport(WinSDK)
0 commit comments