pthread基础
- 实现多线程的技术方案之一.
- pthread是POSIX thread的简写.表示跨平台的线程接口.
- 多线程的开发框架,由于是跨平台的C语言框架,在苹果的头文件中并没有详细的注释.
- 要查阅pthread有关资料,可以访问http://baike.baidu.com
pthread创建子线程步骤
1.导入头文件
#import <pthread.h>
2.pthread创建子线程要使用的函数
/*
pthread_create(pthread_t _Nullable *restrict _Nonnull, const pthread_attr_t *restrict _Nullable, void * _Nullable (* _Nonnull)(void * _Nullable), void *restrict _Nullable)
*/
1.参数
参数1 : 指向新线程的标识符的指针,传入新线程标识符的地址
参数2 : 指向新线程的属性的指针,传入属性的地址, 此时传入空地址/空指针 == NULL
参数3 : 指向函数的指针,传入函数名(函数的地址) : 是新线程要执行的函数/任务
void * (*) (void *)
返回值 函数名 函数参数
参数4 : 传入到新线程要执行的函数的参数
2.返回值 : int ,如果返回0 ,代表创建新线程成功,如果返回非0 ,代表创建新线程失败
很多C语言的框架,并不是非0即真
成功的结果只有一个,但是失败的原因会有很多
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 线程调试
NSLog(@"touchesBegan %@",[NSThread currentThread]);
[self pthreadDemo];
}
- (void)pthreadDemo
{
// 线程调试
NSLog(@"pthreadDemo %@",[NSThread currentThread]);
// 参数1 : 新线程的标识符,这个函数会自动的给 ID 赋值
pthread_t ID;
int result = pthread_create(&ID, NULL, demo, NULL);
if (0 == result) {
NSLog(@"OK");
} else {
NSLog(@"NO OK");
}
}
/// 新线程要执行的函数
void *demo(void *param)
{
// 线程调试
NSLog(@"demo %@",[NSThread currentThread]);
return NULL;
}