线程阻塞 pthread

主线程执行耗时操作 阻塞主线程

线程阻塞 pthread_第1张图片
1-主线程执行耗时操作阻塞用户与UI的交互.png
- (IBAction)buttonClick {
    for (NSInteger i = 0; i<50000; i++) {
        NSLog(@"------buttonClick---%zd", i);
    }
}

用户点击了按钮,在打印完50000个数字之前,用户与页面UI控件的交互被阻塞

pthread

#import "ViewController.h"
#import 

@interface ViewController ()

@end

@implementation ViewController

void * run(void *param)
{
    for (NSInteger i = 0; i<50000; i++) {
        NSLog(@"------buttonClick---%zd--%@", i, [NSThread currentThread]);
    }
    return NULL;
}

- (IBAction)buttonClick:(id)sender {
    pthread_t thread;
    pthread_create(&thread, NULL, run, NULL);
    
    pthread_t thread2;
    pthread_create(&thread2, NULL, run, NULL);
}

@end

pthread:纯C
一套通用的多线程API
适用于Unix\Linux\Windows等系统
跨平台\可移植
使用难度大,程序员管理线程生命周期,在实际开发中几乎不用

你可能感兴趣的:(线程阻塞 pthread)