多线程pthread

//
//  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值