文档章节

pthread

就不穿小内
 就不穿小内
发布于 2015/12/25 21:55
字数 509
阅读 6
收藏 0


pthread
 是 POSIX 多线程开发框架,由于是跨平台的 C 语言框架,在苹果的头文件中并没有详细的注释

导入头文件

#import <pthread.h>

pthread演练

// 创建线程,并且在线程中执行 demo 函数- (void)pthreadDemo {    /**
     参数:
     1> 指向线程标识符的指针,C 语言中类型的结尾通常 _t/Ref,而且不需要使用 *
     2> 用来设置线程属性
     3> 线程运行函数的起始地址
     4> 运行函数的参数

     返回值:
     - 若线程创建成功,则返回0
     - 若线程创建失败,则返回出错编号


     */
    pthread_t threadId = NULL;    NSString *str = @"Hello Pthread";    int result = pthread_create(&threadId, NULL, demo, (__bridge void *)(str));    if (result == 0) {        NSLog(@"创建线程 OK");
    } else {        NSLog(@"创建线程失败 %d", result);
    }
}// 后台线程调用函数void *demo(void *params) {    NSString *str = (__bridge NSString *)(params);    NSLog(@"%@ - %@", [NSThread currentThread], str);    return NULL;
}

小结

  1. 在 C 语言中,没有对象的概念,对象是以结构体的方式来实现的

  2. 通常,在 C 语言框架中,对象类型以 _t/Ref 结尾,而且声明时不需要使用 *

  3. C 语言中的 void * 和 OC 中的 id 是等价的

  4. 内存管理

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

    • 但是,ARC 只负责管理 OC 部分的内存管理,而不负责 C 语言 代码的内存管理

    • 因此,开发过程中,如果使用的 C 语言框架出现 retain/create/copy/new 等字样的函数,大多都需要 release,否则会出现内存泄漏

  5. 在混合开发时,如果在 C 和 OC 之间传递数据,需要使用 __bridge 进行桥接,桥接的目的就是为了告诉编译器如何管理内存

  6. 桥接的添加可以借助 Xcode 的辅助功能添加

  7. MRC 中不需要使用桥接


© 著作权归作者所有

上一篇: NSThread
就不穿小内
粉丝 4
博文 59
码字总数 32988
作品 0
海淀
私信 提问

暂无文章

springboot+jpa 错误信息org.springframework.beans.factory.BeanCreationException

报错信息 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/a......

冥焱
16分钟前
1
0
威胁快报|新兴挖矿团伙借助shodan作恶,非web应用安全再鸣警钟

近日,阿里云安全发现了一个使用未授权访问漏洞部署恶意Docker镜像进行挖矿的僵尸网络团伙。我们给这一团伙取名为Xulu,因为该团伙使用这个字符串作为挖矿时的用户名。 Xulu并不是第一个攻击...

迷你芊宝宝
23分钟前
1
0
十大经典排序算法动画与解析

排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序。 内部排序是数据记录在内存中进行排序。 而外部排序是因排序的数据很大,一次不能容纳全部的排序记...

夜黑人模糊灬
26分钟前
4
0
7. java枚举

1. 枚举是什么 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便 2. 为什么不用静态常量来替代枚举类呢? 3. 常用方式 3.1 方式1 枚举类: package cn.ali.tencent...

20190513
27分钟前
1
0
elasticsearch – 弹性搜索:“Term”,“Match Phrase”和“Query String”之间的差异

术语查询匹配单个术语,因为它是:不分析值。 所以,它不必根据你索引的情况而降低。 如果您在索引时间提供Bennett并且未分析该值,则以下查询将不返回任何内容: { "query": { "te...

xiaomin0322
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部