@@ -23,6 +23,8 @@ internal import C.os.lock
2323@preconcurrency import Musl
2424#elseif canImport(WinSDK)
2525import WinSDK
26+ #elseif canImport(wasi_pthread)
27+ import wasi_pthread
2628#endif
2729
2830package struct LockedState < State> {
@@ -33,7 +35,7 @@ package struct LockedState<State> {
3335 typealias Primitive = os_unfair_lock
3436#elseif os(FreeBSD) || os(OpenBSD)
3537 typealias Primitive = pthread_mutex_t ?
36- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
38+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
3739 typealias Primitive = pthread_mutex_t
3840#elseif canImport(WinSDK)
3941 typealias Primitive = SRWLOCK
@@ -48,7 +50,7 @@ package struct LockedState<State> {
4850 fileprivate static func initialize( _ platformLock: PlatformLock ) {
4951#if canImport(os)
5052 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)
5254 pthread_mutex_init ( platformLock, nil )
5355#elseif canImport(WinSDK)
5456 InitializeSRWLock ( platformLock)
@@ -69,7 +71,7 @@ package struct LockedState<State> {
6971 static fileprivate func lock( _ platformLock: PlatformLock ) {
7072#if canImport(os)
7173 os_unfair_lock_lock ( platformLock)
72- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
74+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
7375 pthread_mutex_lock ( platformLock)
7476#elseif canImport(WinSDK)
7577 AcquireSRWLockExclusive ( platformLock)
@@ -83,7 +85,7 @@ package struct LockedState<State> {
8385 static fileprivate func unlock( _ platformLock: PlatformLock ) {
8486#if canImport(os)
8587 os_unfair_lock_unlock ( platformLock)
86- #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
88+ #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(wasi_pthread)
8789 pthread_mutex_unlock ( platformLock)
8890#elseif canImport(WinSDK)
8991 ReleaseSRWLockExclusive ( platformLock)
0 commit comments