多线程pthread

来源:互联网 发布:中美差距知乎 编辑:程序博客网 时间:2024/05/19 13:30
////  ViewController.m//  多线程之pthread////#import "ViewController.h"#import <pthread.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.    }//MARK: -pthread演练- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{    /**     pthread 是属于 POSTX 多线程开发框架     http://baike.baidu.com               参数1:线程代号的地址 C语言中类型的结尾通常用_t Ref结尾     参数2:线程的属性     参数3:调用函数的指针          void *(*)(void*)         返回值(函数参数)(参数)         void * 和OC中的id是等价的;          参数4:传递给该函数的参数          返回值:     0 正确     非0 错误码          - 在ARC中如果涉及到和C语言中相同的数据类型进行转换时,需要使用 __bridge 桥接     - 在MRC中 不需要桥接          在OC中,如果是ARC开发,编译器会在编译时,自动根据代码结构,添加retain,release,autorelease,ARC只负责OC部分的代码,不负责C的代码,如果C语言的框架出现 retain/create/copy字样的函数,都需要release;     */        pthread_t threadId;    NSString *str = @"hello pthread";    int result = pthread_create(&threadId, NULL, &demo, (__bridge void *)(str));    if (result == 0) {        NSLog(@"OK");    }else{        NSLog(@"error %d",result);    }}void *demo(void *param){    NSLog(@"%@",[NSThread currentThread]);    NSString *sss = (__bridge NSString *)(param);    NSLog(@"%@",sss);    return NULL;}@end

0 0