swift 使用GCD和Swift锁定演示(游乐场)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 使用GCD和Swift锁定演示(游乐场)相关的知识,希望对你有一定的参考价值。

import Foundation
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

// CHANGE THIS TO TRUE FOR the lock queue to be used
let useLocks = false

var counter : Int = 0

func incrementCounter(contextName:String) {
    let originalCounterValue = counter
    counter = counter + 1
    if counter != originalCounterValue + 1 {
        fatalError("\(contextName):\(counter) Another caller got in here and stepped on our data! ")
    } else {
        print("\(contextName):\(counter) OK")
    }
}

let lockQueue = DispatchQueue(label: "lock")

func callIncrement(name:String, useLock: Bool) {
    if useLock {
        lockQueue.async {
            incrementCounter(contextName: name)
        }
    } else {
        incrementCounter(contextName: name)
    }
}

DispatchQueue.global(qos: .background).async {
    for _ in 0..<100 {
        callIncrement(name: "ONE", useLock: useLocks)
    }
}

DispatchQueue.global(qos: .background).async {
    for _ in 0..<100 {
        callIncrement(name: "TWO", useLock: useLocks)
    }
}

以上是关于swift 使用GCD和Swift锁定演示(游乐场)的主要内容,如果未能解决你的问题,请参考以下文章

WWDC Swift 会话中面向协议的编程

Xcode 游乐场 - Swift 4 未接收 JSON 数据

我的带有自动布局约束的 Swift 4 UIScrollView 没有滚动

使用 swift 4 发出 GET 请求在游乐场中有效,但在项目中无效

在 Swift 游乐场中使用 MapKit 显示地图以快速查看?

Swift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误