gpt4 book ai didi

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

转载 作者:知者 更新时间:2024-03-13 04:54:18 25 4
gpt4 key购买 nike

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()
        }
    }

大概就是这样的一个小示例 。
源码下载地址:源码
学习iOS,有他就够了,小码哥视频,传智、黑马、各种swift书籍

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com