@@ -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