多线程——互斥锁

原创 2015年11月20日 22:14:47
  • 互斥锁的作用:保证同一时间只有一个线程访问共享的数据
  • 互斥锁尽可能锁住关键的代码即可
  • self可以是任何NSObject的对象
  • 互斥锁必须是所有线程能访问的对象
  • 建议:如果只有一个地方使用到互斥锁,一般直接写self,可以省去一个变量

模拟卖票场景

- (void)sellTicket {
        while (YES) {
            // 模拟延时
        [NSThread sleepForTimeInterval:1.0];
            @synchronized(self) {
                // 查询是否有票
                if(self.ticketNumber > 0) {
                    // 有,就卖一张
                    self.ticketNumber -- ;
                    // 总票数减一
                    NSLog(@"%@,剩余票数%zd",[NSThread currentThread], self.ticketNumber);
                    continue;
                }
            }

            // 没有,提示用户,票已经卖完
            NSLog(@"票了没了");
            break;
        }
    }

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java 多线程synchronized互斥锁demo

  • 2016年12月16日 14:34
  • 665B
  • 下载

多线程互斥锁和条件变量demo

  • 2016年06月13日 15:06
  • 18KB
  • 下载

JAVA多线程之——互斥锁ReentrantLock

ReentrantLock简介 首先回顾一下synchronized关键字。 把代码声明为synchronized之后,那么就会保证,每次都只有一个线程获取对象的内部锁,进而产生互斥保证共享资源的...

linux多线程学习(四)——互斥锁线程控制

在前面的文章中提及到,一个进程中的多个线程是共享同一段资源的,由于线程对资源的竞争引出了锁。其中mutex是一种简单的加锁方法,这个互斥锁只有两种状态,那就是上锁和解锁,可以把互斥锁看作是某种意义上的...

linux多线程学习(四)——互斥锁线程控制

在前面的文章中提及到,一个进程中的多个线程是共享同一段资源的,由于线程对资源的竞争引出了锁。其中mutex是一种简单的加锁方法,这个互斥锁只有两种状态,那就是上锁和解锁,可以把互斥锁看作是某种意义上的...

python多线程中互斥锁Threading.Lock的简单应用

每个线程互相独立,相互之间没有任何关系,但是在同一个进程中的资源,线程是共享的,如果不进行资源的合理分配,对数据造成破坏,使得线程运行的结果不可预期。这种现象称为“线程不安全”。...

C语言多线程pthread库-互斥锁

C语言多线程pthread库相关函数说明 线程相关操作说明   一 pthread_t   pthread_t在头文件/usr/include/bits/pthreadtypes.h中定...

Java基础进阶_day16_(多线程,互斥锁,线程池,定时器,设计模式)

线程锁 多线程间的通信 线程组 线程池 定时器 设计模式

多线程及互斥锁整理

多线程及互斥锁整理 多线程的创建 这个函数是一个应用程序定义的函数的占位符,作为一个线程的起始地址。在调用CreateThread函数时,指定该地址。LPTHREAD_START_ROUTINE类...
  • cyteven
  • cyteven
  • 2013年12月30日 16:11
  • 2496
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程——互斥锁
举报原因:
原因补充:

(最多只允许输入30个字)