上小节用NSThread实现读取网络图片 , 这节用NSThread
模拟一个卖票的例子 。用NSLock
或者NSCondition
锁定资源
var total = 100 //总票数
var w1 = 0 //窗口1卖出票数
var w2 = 0 //窗口2卖出票数
var isSell = true //是否出售
var lock:NSLock?
var condition:NSCondition?
这里首先定义一些变量
然后再点击卖票的时候,开启连个线程模仿窗口
lock = NSLock()
condition = NSCondition()
//setTicketValue()
let thread1 = NSThread(target: self, selector: "run", object: nil)
thread1.name = "thread-1"
thread1.start()
let thread2 = NSThread(target: self, selector: "run", object: nil)
thread2.name = "thread-2"
thread2.start()
func run(){
while(isSell){
lock?.lock()
if(total>0){
NSThread.sleepForTimeInterval(0.2);
total--
if(NSThread.currentThread().name == "thread-1")
{
w1++
}else if(NSThread.currentThread().name == "thread-2"){
w2++
}
dispatch_async(dispatch_get_main_queue()) {
self.setTicketValue()
}
}else{
dispatch_async(dispatch_get_main_queue()) {
self.totalTicks.text = "票卖完啦"
self.isSell = false
}
}
lock?.unlock()
}
}
大概就是这样的一个小示例 。
源码下载地址:源码
版权声明:本文为博主原创文章,未经博主允许不得转载。
swift详解之十五------------NSThread线程同步锁
原文地址:http://blog.csdn.net/u010586842/article/details/48058563