//
// 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
多线程pthread
最新推荐文章于 2024-01-12 17:53:18 发布