在我的快速练习中,我写了一个名为的简单结构OrderedSet.
我尝试OrderedSet使用GCD串行队列成为线程安全的.
但它不起作用.测试结果不稳定.我期待的是:
20:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Run Code Online (Sandbox Code Playgroud)
但收到类似的东西
2:[3, 19]
Run Code Online (Sandbox Code Playgroud)
这是游乐场代码:
import Foundation
import XCPlayground
struct OrderedSet<T: Equatable> {
mutating func append(e: T) {
dispatch_sync(q) {
if !self.__elements.contains(e) {
self.__elements.append(e)
}
}
}
var elements: [T] {
var elements: [T] = []
dispatch_sync(q) {
elements = self.__elements
}
return elements
}
var count: Int {
var ret = 0
dispatch_sync(q) …Run Code Online (Sandbox Code Playgroud)