文章26 | 阅读 13283 | 点赞0
上小节用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()
}
}
大概就是这样的一个小示例 。
源码下载地址:源码
学习iOS,有他就够了,小码哥视频,传智、黑马、各种swift书籍
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/u010586842/article/details/48058563
内容来源于网络,如有侵权,请联系作者删除!