并发编程 学习笔记(二)

来源:互联网 发布:大数据预测性分析方法 编辑:程序博客网 时间:2024/05/21 11:06

Objective-C中的并发编程有如下几个:

1.语言特性

使用@synchronized指令可以在Objective-C代码中创建锁,使用atomic属性限定符可以对Objective-C属性进行线程安全的访问。

@synchronized(uniqueObj) {    // 关键部分-被该指令保护的代码}

2.消息传递

Foundation框架中的NSObject类含有多个用于向其他线程发送消息的方法。

performSelector:onThread:withObject:waitUntilDone:performSelector:onThread:withObject:waitUntilDone:modes:performSelectorOnMainThread:withObject:waitUntilDone:performSelectorOnMainThread:withObject:waitUntilDone:modes:

使用案例如下:

ConcurrentProcessor *processor = [ConcurrentProcessor new];[processor performSelector: @selector(downloadTask) onThread: secondaryThread withObject: nil waitUntilDone:NO];

3.线程

Foundation框架提供了直接创建和管理线程的整套API。

3.1.NSObject线程

ConcurrentProcessor *processor = [ConcurrentProcessor new];[processor performSelectorInBackground: @selector(downloadTask) withObject: nil];

这个例子隐式地创建和启动用于执行对象中方法的新线程。

3.2.NSThread
NSThread可以显示地创建和管理线程。

    detachNewThreadSelector:toTarget:withObject:    initWithTarget:selector:object:

但是NSThread创建的线程需要自己启动

   [thread start]; 

NSThread中有许多方法,可以配置线程、确定线程的执行状态和查询线程的环境。比如:

   [NSThread sleepForTimeInterval:5.0];

3.3.线程同步
3.3.1 锁:大概分为NSLock, NSRecursiveLock, NSConditionLock, NSDistributedLock
3.3.2 条件:条件变量是一种锁,用于同步操作的执行顺序。

4.操作队列

这是基于Objective-C的消息传递机制。

5.分派队列

这些是基于C语言的一系列语言特性和运行时服务。

0 0
原创粉丝点击