多线程

来源:互联网 发布:爱知 流星 编辑:程序博客网 时间:2024/05/21 09:03
<span style="font-size:14px;">一 NSThread,pThread,NSObjcet</span>#import "ViewController.h"#import <pthread.h>@interface ViewController ()@end@implementation ViewControllervoid *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对象


0 0
原创粉丝点击