您的位置:首页 > 移动开发 > IOS开发

多线程02---pThread简介

2015-08-07 10:08 573 查看

1.简介

pthread 是属于 POSIX 多线程开发框架。它是c语言提供的一个跨平台的多线程解决方案。由于其在iOS编程中,操作比较麻烦,一般不用,这里介绍仅仅作为了解。

2.pthread的使用

通过以下函数创建pthread,在C语言中类型的结尾通常 _t/Ref,而且不需要使用 *:

int pthread_create(pthread_t * __restrict, const pthread_attr_t * __restrict,
void *(*)(void *), void * __restrict);


参数:

1. pthread_t * __restrict 线程代号的地址
2. onst pthread_attr_t * __restrict 线程的属性
3. 调用函数的指针
- void *(*)(void *)
- 返回值 (函数指针)(参数)
- void * 和 OC 中的 id 是等价的
4. void * __restrict :传递给该函数的参数


返回值:

如果是0,表示正确

如果是非0,表示错误码

3.代码实战:

#import "ViewController.h"
#import <pthread.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSString *str = @"MR";

pthread_t thread;
pthread_create(&thread, NULL, &demo, (__bridge void *)(str));
}

void* demo(void* params)
{
NSString *str = (__bridge NSString *)(params);
for (int i = 0 ; i < 100; i++) {

NSLog(@"%@",str);
}
return NULL;
}
@end


__bridge(桥接)

在 ARC 开发中,如果设计到和 C 语言中相同的数据类型进行转换时,需要使用 __bridge “桥接”

在 OC 中,如果是 ARC 开发,编译器会在编译的时候,自动根据代码结构,添加 retain, release, autorelease

ARC 只负责 OC 部分的代码,不负责 C 的代码,如果 C 语言的框架出现 retain/create/copy 字样的函数,都需要release

运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息