NSThread

作者: 愤怒的八哥 | 来源:发表于2019-02-13 14:43 被阅读0次
类型 API 说明
创建 initWithTarget:selector: object: 显式创建,需要调用start
detachNewThreadSelector: toTarget: withObject: 自动启动线程
阻塞(暂停)线程方法 + (void)sleepUntilDate:(NSDate *)date
+ (void)sleepForTimeInterval:(NSTimeInterval)time
强制停止线程 + (void)exit; 线程进入死亡状态

perform系列方法

// 在主线程上执行操作
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray<NSString *> *)array;
  // equivalent to the first method with kCFRunLoopCommonModes

// 在指定线程上执行操作
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array NS_AVAILABLE(10_5, 2_0);
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait NS_AVAILABLE(10_5, 2_0);

// 在当前线程上执行操作,调用 NSObject 的 performSelector:相关方法
- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;

线程的状态转换

1、如果CPU现在调度当前线程对象,则当前线程对象进入运行状态,2、如果CPU调度其他线程对象,则当前线程对象回到就绪状态。
3、如果CPU在运行当前线程对象的时候调用了sleep方法\等待同步锁,则当前线程对象就进入了阻塞状态,等到sleep到时\得到同步锁,则回到就绪状态。
4、如果CPU在运行当前线程对象的时候线程任务执行完毕\异常强制退出,则当前线程对象进入死亡状态。


参考:
https://www.jianshu.com/p/cbaeea5368b1

相关文章

网友评论

      本文标题:NSThread

      本文链接:https://www.haomeiwen.com/subject/clwheqtx.html