創建UnsafeMutablePointer
public func OSAtomicCompareAndSwapPtr(_ __oldValue: UnsafeMutableRawPointer!, _ __newValue: UnsafeMutableRawPointer!, ___theValue: UnsafeMutablePointer<UnsafeMutableRawPointer?>!) -> Bool
需要的參數theValue
一種類型的UnsafeMutablePointer<UnsafeMutableRawPointer?>
但我有麻煩找出如何使一個從類型UnsafeMutablePointer<T?>
有關我如何做到這一點的任何想法?
編輯:
的好奇,爲什麼我試圖做到這一點,我想創建一個圍繞這一個通用的包裝中迅速建立在這個blog post勾勒出界MPMC隊列。這裏是我的包裝到目前爲止
func compareAndSwap<T: AnyObject>(current: T?, future: T?, toPtr: UnsafeMutablePointer<T?>) -> Bool {
let currentPtr = current.map(Unmanaged.passUnretained)?.toOpaque()
let futurePtr = future.map(Unmanaged.passRetained)?.toOpaque()
if OSAtomicCompareAndSwapPtr(currentPtr, futurePtr, ????) {
return true
}
return false
爲什麼你需要調用這個函數?請向我們展示使用此的代碼。 – kennytm
@kennytm我已經添加了一個解釋 –