@@ -23,6 +23,8 @@ internal import C.os.lock
23
23
@preconcurrency import Musl
24
24
#elseif canImport(WinSDK)
25
25
import WinSDK
26
+ #elseif canImport(wasi_pthread)
27
+ import wasi_pthread
26
28
#endif
27
29
28
30
package struct LockedState < State> {
@@ -33,7 +35,7 @@ package struct LockedState<State> {
33
35
typealias Primitive = os_unfair_lock
34
36
#elseif os(FreeBSD) || os(OpenBSD)
35
37
typealias Primitive = pthread_mutex_t ?
36
- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
38
+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
37
39
typealias Primitive = pthread_mutex_t
38
40
#elseif canImport(WinSDK)
39
41
typealias Primitive = SRWLOCK
@@ -48,7 +50,7 @@ package struct LockedState<State> {
48
50
fileprivate static func initialize( _ platformLock: PlatformLock ) {
49
51
#if canImport(os)
50
52
platformLock. initialize ( to: os_unfair_lock ( ) )
51
- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
53
+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
52
54
pthread_mutex_init ( platformLock, nil )
53
55
#elseif canImport(WinSDK)
54
56
InitializeSRWLock ( platformLock)
@@ -69,7 +71,7 @@ package struct LockedState<State> {
69
71
static fileprivate func lock( _ platformLock: PlatformLock ) {
70
72
#if canImport(os)
71
73
os_unfair_lock_lock ( platformLock)
72
- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
74
+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
73
75
pthread_mutex_lock ( platformLock)
74
76
#elseif canImport(WinSDK)
75
77
AcquireSRWLockExclusive ( platformLock)
@@ -83,7 +85,7 @@ package struct LockedState<State> {
83
85
static fileprivate func unlock( _ platformLock: PlatformLock ) {
84
86
#if canImport(os)
85
87
os_unfair_lock_unlock ( platformLock)
86
- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
88
+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
87
89
pthread_mutex_unlock ( platformLock)
88
90
#elseif canImport(WinSDK)
89
91
ReleaseSRWLockExclusive ( platformLock)
0 commit comments