objective-c 多线程并发售票问题 NSLock 临界资源 临界区
来源:互联网 发布:看门狗低配优化补丁 编辑:程序博客网 时间:2024/09/21 09:26
//// main.m// testProjectCmdLine//// Created by qiao.zhiguang on 14/11/24.// Copyright (c) 2014年 cloudacc. All rights reserved.//#import <Foundation/Foundation.h>// 临界资源:多线程并发访问的 全局变量// 临界区: 线程中访问临界资源的 代码块int ticketCount = 20;//总票数 (临界资源)NSLock * ticketLock; // 临界资源(票)锁void ticketSellor(int sellorIndex);//售票员int main(int argc,const char * argv[]) { @autoreleasepool { // insert code here... ticketLock = [[NSLock alloc]init]; dispatch_queue_t concurrentQueue =dispatch_queue_create(NULL,DISPATCH_QUEUE_CONCURRENT); for (int i =1; i <=5; i++) {// 提交5个并发售票线程 dispatch_async(concurrentQueue, ^{ ticketSellor(i);//并发售票 }); } } while (YES) { sleep(5);//每五秒检查一次看是否已经卖完 [ticketLock lock]; //************************************** <临界区> if (ticketCount ==0) { NSLog(@"票已经售完,程序关闭"); return0; } //************************************** <临界区/> [ticketLock unlock]; }}void ticketSellor(int sellorIndex){ while (YES) { sleep(rand()%6+1);// 等待购票人来购票 NSLog(@"售票员 %d等待 临界资源 ...",sellorIndex); [ticketLock lock]; //************************************** <临界区> if (ticketCount>0) { NSLog(@"售票员 %d正在 出售第 %d 张票 ...",sellorIndex,ticketCount); ticketCount --; }else{ NSLog(@"售票员 %d发现票已经售完,等待...",sellorIndex); } //************************************** <临界区/> [ticketLock unlock]; }}
1 0
- objective-c 多线程并发售票问题 NSLock 临界资源 临界区
- objective-c 多线程并发售票问题 NSLock 临界资源 临界区
- 多线程【临界区-临界资源的理解】
- 临界资源 & 临界区
- 多线程(C++)临界区Critical Sections问题
- 临界区临界资源CRITICAL_SECTION
- 临界资源和临界区
- 临界资源和临界区
- 临界资源和临界区
- 临界资源/临界区/互斥量
- 11java 王少飞-多线程临界资源问题
- 什么叫临界资源和临界区?
- 什么是临界资源和临界区
- 【多线程开发】临界区死锁问题
- 多线程临界区问题及解决方法
- 多线程-临界区模式
- 多线程临界区编程
- VC多线程临界区
- android studio与eclipse常用快捷键对比
- 【乐易考看高校】大学生创业孵化基地启动仪式暨2015届毕业生供需洽谈会11月16日在赤峰学院举行
- Java时间日期格式转换
- Android 屏幕自适应问题和9切图
- js判断url是否是合法http(s)
- objective-c 多线程并发售票问题 NSLock 临界资源 临界区
- 二层交换机,三层交换机,路由器的区别
- xcode6中新建空工程和在iPhone5s上的程序界面只有iPhone4上的大小
- 关于udelay(); mdelay(); ndelay(); msleep();
- Java Thread类的yield()和join()的区别和用法
- oracle 转行函数
- java.security.InvalidKeyException: Illegal key size or default parameters
- Android 图片加载Bitmap OOM错误解决办法
- Mybaties的鉴别器