Skip to content

Commit 1454e6c

Browse files
[wasm] Use pthread mutex for wasm32-unknown-wasip1-threads target (#1490)
1 parent 30595dd commit 1454e6c

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

Sources/FoundationEssentials/LockedState.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ internal import C.os.lock
2323
@preconcurrency import Musl
2424
#elseif canImport(WinSDK)
2525
import WinSDK
26+
#elseif canImport(wasi_pthread)
27+
import wasi_pthread
2628
#endif
2729

2830
package 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

Comments
 (0)