IOS线程间通信
2016-07-29 16:57
381 查看
线程间通信的体现
1.个线程传递数据给另1个线程
在1个线程中执行完特定任务后,转到另1个线程继续执行任务
线程间通信常用方法
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;
2 .种为NSMachPort方式。NSPort有3个子类,NSSocketPort、NSMessagePort、NSMachPort,但在iOS下只有NSMachPort可用。
使用的方式为接收线程中注册NSMachPort,在另外的线程中使用此port发送消息,则被注册线程会收到相应消息,然后最终在主线程里调用某个回调函数。
可以看到,使用NSMachPort的结果为调用了其它线程的1个函数,而这正是performSelector所做的事情,所以,NSMachPort是个鸡肋。线程间通信应该都通过performSelector来搞定。
3.GCD方式线程间通信
1.个线程传递数据给另1个线程
在1个线程中执行完特定任务后,转到另1个线程继续执行任务
线程间通信常用方法
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;
2 .种为NSMachPort方式。NSPort有3个子类,NSSocketPort、NSMessagePort、NSMachPort,但在iOS下只有NSMachPort可用。
使用的方式为接收线程中注册NSMachPort,在另外的线程中使用此port发送消息,则被注册线程会收到相应消息,然后最终在主线程里调用某个回调函数。
可以看到,使用NSMachPort的结果为调用了其它线程的1个函数,而这正是performSelector所做的事情,所以,NSMachPort是个鸡肋。线程间通信应该都通过performSelector来搞定。
3.GCD方式线程间通信
dispatch_async(dispatch_get_main_queue(), ^{ // 回到主线程,执⾏UI刷新操作 });
相关文章推荐
- Android Handler主线程和一般线程通信的应用分析
- 举例讲解Java中Piped管道输入输出流的线程通信控制
- 线程间通信
- Looper Handler MessageQueue分
- 黑马程序员——多线程之线程间的通信
- Python运行Shell命令
- JAVA学习——多线程通信
- 目标--connect world,ZMQ源码详细解析 之 进程内通信流程
- 【黑马程序员】 java笔记——线程通信
- AsyncTask和Handler的优缺点比较
- android线程间的通信机制
- 线程之间的通信
- 线程2:线程通信事件机制(单线程、两个线程、多个线程通信)
- 黑马程序员--javaSE--多线程基础总结
- Java线程通信
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
- Java多线程基础(四)Java传统线程同步通信技术
- 线程之间的通信(thread signal)
- 多线程03---NSThread
- C#学习之多线程开发技术(十)