多线程——互斥锁

原创 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;
        }
    }

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

iOS 多线程 锁 互斥 同步

在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题: 方法一,@synchronized(id anObject),(最简单的方法) 会自动对参数对象加锁,保证临界区内的代码线程安全...
  • likendsl
  • likendsl
  • 2013年02月04日 14:49
  • 52542

Linux多线程编程-互斥锁

互斥锁         多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量。POSIX互斥锁相关函数主要有以下5个: #inc...
  • u012796139
  • u012796139
  • 2015年07月04日 19:11
  • 5011

Linux系统编程——线程同步与互斥:互斥锁

在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话...
  • tennysonsky
  • tennysonsky
  • 2015年06月14日 22:36
  • 5642

java 多线程synchronized互斥锁demo

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

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

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

多线程中互斥锁和临界区锁编码及特点

  • 2015年03月11日 09:31
  • 5KB
  • 下载

JAVA多线程之——互斥锁ReentrantLock

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

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

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

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

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

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

C语言多线程pthread库相关函数说明 线程相关操作说明   一 pthread_t   pthread_t在头文件/usr/include/bits/pthreadtypes.h中定...
  • hanghang121
  • hanghang121
  • 2016年02月01日 13:26
  • 1760
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程——互斥锁
举报原因:
原因补充:

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