多线程

NSThread:   代表执行的线程,可以使用该类的对象封装线程操作。    

NSOperation:   定义了任务的执行环境、状态等基本属性,继续该类来指定具体的操作,通常情况下,编写NSOperation的 子类来定义具体的操作。  0 

NSInvocationOperation:   NSOperation的子类,可以指定操作方法。   

NSOperationQueue:   运行队列(Operation queue)的管理者,配合NSOperation的子类对象和NSIvocationOperation对象    使用,通过添加操作对象完成并发操作。   

NSRunLoop:   表示程序的运行回路,该类的对象可以接收到各种时间(如来自NSTimer的时间变化),协助程序对这些事   件做出响应。   

NSTimer:   代表定时器的类。用它来设定时间间隔,到时间后启动,发送消息。一般来说,NSTimer和NSRunLoop想   配合使用。     



子线程不能执行UI更新操作,只有主线程可以





NSThread:

方法1:由系统分发出一个子线程,管理权归系统所有。

方法1:
[NSTread detachNewThreadSelector:@selector(task) toTarget:self

withObject:nil];

方法2:自定义的NSThread类,自己开辟子线程,由自己进行管理。

方法2:
NSThread *_thread =[[NSThread alloc] initWithTarget:self selector:@selector(task) object:nil];

[_thread start]; 该方法是类自己开辟线程,所以由自己进行管理。

 

NSInvocationOperation:   方法1是类自己开辟线程,所以由自己进行管理。  

方法1:
NSInvocationOperation *op=[[NSInvocationOperation alloc] initWithTarget:self

selector:@selector(task) object:nil]; [op start]; 


NSOperationQueue:

方法2:将对象放入运行对列中,系统会自动生成一个线程,来执行Operation对象。 如果将最大并发数设置为1的话,则同时只用一个线程运行,也就是说,op1,op2执行的任务会顺次

执行。由此可解决线程同步问题  


方法2:

· NSOperationQueue *queue=[[NSOperation alloc] init]

· [ququ setMaxConcurrentOperationCount:1];//指定能够同时并发执行的操作个数    





在执行互斥操纵以前,先检查锁的状态,如果处于“打开”状态,则可继续运行,同时将改状态
为“锁定”;在任务执行完成后,再将状态改为“打开”。这样,只要有一个线程再执行互斥操作,其它线
程检测到锁定状态后,都会被阻塞,从而保证同一时间互斥操纵的唯一性。

NSLock *thlock=[[NSLock alloc] init];

BOOL start;

Void threadMethod { NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

while(start) { [thlock lock];

//互斥操作代码

[thlock unlock]; } [pool release]; } 



NSConditionLock是一个条件锁

 考虑生产者—消费者的需求,让两个线程来分别扮演生产者和消费者的角色,要协调两个线程,需要一
个信号量,来指示有无商品。在线程执行过程中改变和查看该信号量,即可完成同步。


condition机制可以为线程代码提供保护

Condition包含两种状态:信号态(signaled)和非信号态(non—signaled)。使用condition是这样一 个过程:在线程执行时,会不断检查状态。只有为信号态时,线程会继续;反之,线程会等待 


[condition lock];

[thCondition wait];

............

[theCondition unlock];

sleep(3);//设置线程休眠三秒钟

[theCondition lock];


...............
[theCondition signal]; 

[theCondition unlock];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值