<span style="font-size:14px;">
一 NSThread,pThread,NSObjcet
</span>
#import "ViewController.h"
#import <pthread.h>
@interface ViewController ()
@end
@implementation ViewController
void *run (void *param)
{
return NULL;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// PThread
pthread_t pThread;
pthread_create(&pThread, NULL, run, NULL);
// NSThread
// 1
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"rose"];
[thread start];
// 2
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"jack"];
// 3
[self performSelectorInBackground:@selector(run:) withObject:@"xixi"];
}
- (void)run:(id)object
{
NSLog(@"------%@", object);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
二 线程状态
1 自旋锁 atomic 原子性
2 互斥锁 synchronized
相同点:
都能保证同一时间只有一个线程访问共享资源。都能保证线程安全。
不同点:
互斥锁:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。
自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程会立即执行。
四 线程间通讯
1 [self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#> modes:<#(nullable NSArray<NSString *> *)#>];
2 port对象