@@ -19,14 +19,16 @@ import Musl
1919import WinSDK
2020#elseif canImport(Bionic)
2121import Bionic
22+ #elseif canImport(wasi_pthread)
23+ import wasi_pthread
2224#else
2325#error("Unsupported platform")
2426#endif
2527
2628internal struct Lock {
2729 #if canImport(Darwin)
2830 typealias Primitive = os_unfair_lock
29- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
31+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
3032 typealias Primitive = pthread_mutex_t
3133 #elseif canImport(WinSDK)
3234 typealias Primitive = SRWLOCK
@@ -44,7 +46,7 @@ internal struct Lock {
4446 fileprivate static func initialize( _ platformLock: PlatformLock ) {
4547 #if canImport(Darwin)
4648 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)
4850 let result = pthread_mutex_init ( platformLock, nil )
4951 precondition ( result == 0 , " pthread_mutex_init failed " )
5052 #elseif canImport(WinSDK)
@@ -55,7 +57,7 @@ internal struct Lock {
5557 }
5658
5759 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)
5961 let result = pthread_mutex_destroy ( platformLock)
6062 precondition ( result == 0 , " pthread_mutex_destroy failed " )
6163 #endif
@@ -65,7 +67,7 @@ internal struct Lock {
6567 fileprivate static func lock( _ platformLock: PlatformLock ) {
6668 #if canImport(Darwin)
6769 os_unfair_lock_lock ( platformLock)
68- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
70+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
6971 pthread_mutex_lock ( platformLock)
7072 #elseif canImport(WinSDK)
7173 AcquireSRWLockExclusive ( platformLock)
@@ -77,7 +79,7 @@ internal struct Lock {
7779 fileprivate static func unlock( _ platformLock: PlatformLock ) {
7880 #if canImport(Darwin)
7981 os_unfair_lock_unlock ( platformLock)
80- #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
82+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic) || canImport(wasi_pthread)
8183 let result = pthread_mutex_unlock ( platformLock)
8284 precondition ( result == 0 , " pthread_mutex_unlock failed " )
8385 #elseif canImport(WinSDK)
0 commit comments