import Darwin.POSIX.pthread.pthread
for i in 0..<3 {
let pi = UnsafeMutablePointer<Int>.allocate(capacity: 1)
pi.pointee = i
var tid: pthread_t?
pthread_create(&tid, nil, { p in
p.withMemoryRebound(to: Int.self, capacity: 1) { pi in
let i = pi.pointee
p.deallocate()
if i == 0 {
pthread_exit(nil)
}
print("thread \(pthread_self()): \(i)")
}
return nil
}, pi)
}
import Darwin.POSIX.pthread.pthread
for i in 0..<3 {
let pi = UnsafeMutablePointer<Int>.allocate(capacity: 1)
pi.pointee = i
var tid: pthread_t?
pthread_create(&tid, nil, { p in
p.withMemoryRebound(to: Int.self, capacity: 1) { pi in
let i = pi.pointee
p.deallocate()
if i == 0 {
pthread_exit(nil)
}
print("thread \(pthread_self()): \(i)")
}
return nil
}, pi)
pthread_join(tid!, nil)
}