当我运行以下代码时,命令行工具Xcode中的控制台中没有打印出任何内容:
import Foundation
class A {
var someValue = 0
let concurrentQueue = dispatch_queue_create("queue_for_property", DISPATCH_QUEUE_CONCURRENT)
func increaseValueBy1000() {
dispatch_barrier_async(concurrentQueue) {
for _ in 0 ..< 1000 {
let v = self.someValue + 1
print(v)
self.someValue = v
}
}
}
}
let instance1 = A()
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) {
instance1.increaseValueBy1000()
}
instance1.increaseValueBy1000()
Run Code Online (Sandbox Code Playgroud)
我在控制台中看不到任何print语句.如果我删除障碍线工作相当好.在这种情况下我做错了为什么我的障碍不允许打印?
应用程序 - 例如命令行程序 - 还没有"运行循环"必须调用
dispatch_main() // Swift 2
dispatchMain() // Swift 3
Run Code Online (Sandbox Code Playgroud)
为了使用GCD.从文档:
此函数"停放"主线程并等待将块提交到主队列.调用
UIApplicationMain(iOS),NSApplicationMain(Mac OS X)或CFRunLoopRun主线程的应用程序不得调用dispatch_main.
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |