小编tom*_*kid的帖子

Swift 2:struct thread-safety

在我的快速练习中,我写了一个名为的简单结构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)

macos grand-central-dispatch ios swift

6
推荐指数
1
解决办法
749
查看次数

标签 统计

grand-central-dispatch ×1

ios ×1

macos ×1

swift ×1