@@ -35,6 +35,9 @@ public class Synchronized<Value> {
3535 #elseif os(Linux) || os(Android)
3636 /// A lock type appropriate for the current platform.
3737 var lock : UnsafeMutablePointer < pthread_mutex_t >
38+ #elseif os(FreeBSD)
39+ /// A lock type appropriate for the current platform.
40+ var lock : UnsafeMutablePointer < pthread_mutex_t ? >
3841 #elseif os(Windows)
3942 var lock : UnsafeMutablePointer < SRWLOCK >
4043 #else
@@ -53,6 +56,10 @@ public class Synchronized<Value> {
5356 lock = UnsafeMutablePointer< pthread_mutex_t> . allocate( capacity: 1 )
5457 lock. initialize ( to: pthread_mutex_t ( ) )
5558 pthread_mutex_init ( lock, nil )
59+ #elseif os(FreeBSD)
60+ lock = UnsafeMutablePointer< pthread_mutex_t?> . allocate( capacity: 1 )
61+ lock. initialize ( to: nil )
62+ pthread_mutex_init ( lock, nil )
5663 #elseif os(Windows)
5764 lock = UnsafeMutablePointer< SRWLOCK> . allocate( capacity: 1 )
5865 InitializeSRWLock ( lock)
@@ -77,6 +84,9 @@ public class Synchronized<Value> {
7784 #elseif os(Linux) || os(Android)
7885 pthread_mutex_lock ( lock)
7986 defer { pthread_mutex_unlock ( lock) }
87+ #elseif os(FreeBSD)
88+ pthread_mutex_lock ( lock)
89+ defer { pthread_mutex_unlock ( lock) }
8090 #elseif os(Windows)
8191 AcquireSRWLockExclusive ( lock)
8292 defer { ReleaseSRWLockExclusive ( lock) }
@@ -113,6 +123,9 @@ extension Lock {
113123 #elseif os(Linux) || os(Android)
114124 pthread_mutex_lock ( lock)
115125 defer { pthread_mutex_unlock ( lock) }
126+ #elseif os(FreeBSD)
127+ pthread_mutex_lock ( lock)
128+ defer { pthread_mutex_unlock ( lock) }
116129 #elseif os(Windows)
117130 AcquireSRWLockExclusive ( lock)
118131 defer { ReleaseSRWLockExclusive ( lock) }
0 commit comments