Die Funktion erstellen:Wie UnsafeMutablePointer <UnsafeMutablePointer> in schnellen
public func OSAtomicCompareAndSwapPtr(_ __oldValue: UnsafeMutableRawPointer!, _ __newValue: UnsafeMutableRawPointer!, ___theValue: UnsafeMutablePointer<UnsafeMutableRawPointer?>!) -> Bool
erfordert eine Art von UnsafeMutablePointer<UnsafeMutableRawPointer?>
für den Parameter theValue
aber ich habe Probleme, herauszufinden, wie man es von einem Typ machen UnsafeMutablePointer<T?>
Irgendwelche Gedanken darüber, wie ich das tun könnte?
EDIT:
für Neugierige, warum ich versuche, dies zu tun, ich versuche, eine generische Wrapper um dies zu schaffen, eine beschränkte MPMC Warteschlange in swift zu schaffen, wie in diesem blog post skizziert. Hier ist mein Wrapper so weit
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
Warum müssen Sie diese Funktion aufrufen? Bitte zeigen Sie uns den Code, der dies verwendet. – kennytm
@kennytm Ich habe eine Erklärung hinzugefügt –