step 1 pthread 演练

pthread

  • pthread 是 POSIX 多线程开发框架,由于是跨平台的 C 语言框架,在苹果的头文件中并没有详细的注释
  • 要查阅 pthread 有关资料,可以访问 http://baike.baidu.com

导入头文件

#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 的辅助功能添加

MRC 中不需要使用桥接

时间: 2024-10-11 04:59:51

step 1 pthread 演练的相关文章

iOS开发中多线程基础

耗时操作演练 代码演练 编写耗时方法 - (void)longOperation { for (int i = 0; i < 10000; ++i) { NSLog(@"%@ %d", [NSThread currentThread], i); } } 直接调用耗时方法 // 1> 直接调用耗时方法 [self longOperation]; 运行測试效果 在后台运行耗时方法 // 2> 在后台运行耗时方法 [self performSelectorInBackgro

多线程随笔知识点总结3

pthread演练 1.基本概念 pthread是POSIX多线程开发框架,是跨平台的C语言框架,在苹果的头文件中并没有太多的注释 2.演练 #import <pthread.h> // 创建线程,并且在线程中执行 demo 函数 - (void)pthreadDemo { /** 参数: 1> 指向线程标识符的指针,C 语言中类型的结尾通常 _t/Ref,而且不需要使用 * 2> 用来设置线程属性 3> 新建立的线程执行代码的函数 4> 运行函数的参数 返回值: -

Vs2013在Linux开发中的应用(28):单步执行

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在VS调试时,有三种类型的单步操作逐语句,逐过程和跳出,当进行这三种操作时,SDM调用的其实是同一个回调: // This method is deprecated. Use the IDebugProcess3::Step method instead. /// <summary> /// Performs a step. /// /// In case there is any threa

step 4 GCD 队列演练

串行队列 特点 以先进先出的方式,顺序调度队列中的任务执行 无论队列中所指定的执行任务函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 队列创建 dispatch_queue_t queue = dispatch_queue_create("queueName", DISPATCH_QUEUE_SERIAL); dispatch_queue_t queue = dispatch_queue_create("queueName", NULL); 串行

step 6 NSOperation (基本演练)

NSOperation 抽象类 NSOperation 是一个"抽象类",不能直接使用 抽象类的用处是定义子类共有的属性和方法 在苹果的头文件中,有些抽象类和子类的定义是在同一个头文件中的 子类: NSInvocationOperation (调用) NSBlockOperation (块) NSOperationQueue 队列 基本演练 NSInvocationOperation start start 方法 会在当前线程执行 @selector 方法 - (void)opDemo

life of a NPTL pthread

这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=91 March 7, 2013 life of a NPTL pthread Filed under: concurrency,linux,posix — Tags: NPTL, pthread — Raison @ 12:52 pm (Original Work by Peixu Zhu) NPTL pthread is the default pthread imple

转载自~浮云比翼:Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥)

Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥) 介绍:什么是线程,线程的优点是什么 线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等.但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage). 一

经典算法题每日演练——第二十四题 梳排序

原文:经典算法题每日演练--第二十四题 梳排序 这篇再看看一个经典的排序,梳排序,为什么取名为梳,可能每个梳都有自己的gap吧,大梳子gap大一点,小梳子gap小一点. 上一篇我们看到鸡尾酒排序是在冒泡排序上做了一些优化,将单向的比较变成了双向,同样这里的梳排序也是在冒泡排序上做了一些优化. 冒泡排序上我们的选择是相邻的两个数做比较,就是他们的gap为1,其实梳排序提出了不同的观点,如果将这里的gap设置为一定的大小, 效率反而必gap=1要高效的多. 下面我们看看具体思想,梳排序有这样一个1.

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.