//
// ViewController.m
// 02-pthread演练
//
// Created by gzxzmac on 16/1/28.
// Copyright © 2016年 gzxzmac. All rights reserved.
//
#import "ViewController.h"
#import "pthread.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/*
参数
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
不需要设置
第三个参数是线程运行函数的起始地址。
void *(*)(void *) 线程入口
c语言的函数名就是函数的地址
void * 相当于 oc 中的 id
最后一个参数是运行函数的参数。
返回值
若线程创建成功,则返回0。若线程创建失败,则返回出错编号。
__bridge 桥接
用来c语言的对象(结构体) 跟 oc 对象的一个转换
如果是c语言创建的对象,需要手动去释放内存(create,copy,retain)---> 使用get 方法来获取的对象,不需要去释放内存
在ARC中,代码是自动添加release,retain,autoRelsease
在MRC中不需要添加 __bridge
桥接只是用来转换他的类型,它的所有权不影响
__bridge 怎么用?
利用Xcode 自动提示 。 一般情况下在C语言的框架中使用较多。通讯录
*/
// int age[] = {2,3,4};
// NSLog(@"%@",&age);
pthread_t threadId = NULL;
id str = @"hello world";
int result = pthread_create(&threadId, NULL, demo, (__bridge void *)(str));
if (result == 0) {
NSLog(@"创建线程成功");
}else {
NSLog(@"创建线程失败");
}
}
void * demo (void *params) {
id value = (__bridge id)(params);
NSLog(@"%@ %@",value,[NSThread currentThread]);
return NULL;
}
- (void)test:(id)value {
}
@end
多线程:pthread演练
最新推荐文章于 2025-04-23 00:48:18 发布