码迷,mamicode.com
首页 > 编程语言 > 详细

swift详解之十五------------NSThread线程同步锁

时间:2015-08-28 21:27:29      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:线程   swift   

NSThread线程同步锁


上小节用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线程同步锁

标签:线程   swift   

原文地址:http://blog.csdn.net/u010586842/article/details/48058563

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!