pthread创建线程的简单演示
- 导入头文件 #import <pthread.h>
- 指定新线程标识符
- 使用pthread创建线程的函数
- 根据result = 0 与否判断子线程创建成功与否
- int pthread_create(pthread_t _Nullable * _Nonnull __restrict,
- const pthread_attr_t * _Nullable __restrict,
- void * _Nullable (* _Nonnull)(void * _Nullable),
- void * _Nullable __restrict);
参数的意义分别为:
- pthread_t _Nullable * _Nonnull __restrict 传入到线程标识符的指针地址
- const pthread_attr_t * _Nullable __restrict 线程属性:传入指向线程属性的指针地址
- void * _Nullable (* _Nonnull)(void * _Nullable) 新线程要执行的函数(任务),传入函数地址即函数名
- void * _Nullable __restrict: 传入到函数的参数
- 返回值为整型 0表示创建线程成功 否则创建线程失败
- 参数3的进一步解释
void * _Nullable (* _Nonnull) (void * _Nullable)
#import "ViewController.h"
#import <pthread.h> @interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *pthreadCreateThreadBtn; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; }
#pragma mark - 创建线程的点击事件
- (IBAction)pthreadCreateThreadBtnClick:(id)sender { [self pthreadDemo];
[self pthreadDemo2]; } #pragma mark - pthread 创建子线程的代码实现
- (void)pthreadDemo{
//参数1: 新线程的标识符
pthread_t ID; //创建 指定标识符 指定参数为空 的线程
int result = pthread_create(&ID, NULL, demo, NULL);
if (result == ) {
NSLog(@"未传参数线程创建成功");
}else{
NSLog(@"未传参数线程创建失败");
} } #pragma mark - pthread 创建子线程的代码实现
- (void)pthreadDemo2{
// NSLog(@"pthreadDemo2 = %@",[NSThread currentThread]);
//参数1: 新线程的标识符
pthread_t id2;
NSString *ocStr = @"hello iOS"; //创建 指定标识符 指定参数 的线程
// Implicit conversion of Objective-C pointer type 'NSString *' to C pointer type 'void *' requires a bridged cast
int result = pthread_create(&id2, NULL, demo2, (__bridge void *)(ocStr));
if (result == ) {
NSLog(@"传了参数的线程创建成功");
}else{
NSLog(@"传了参数的线程创建失败");
} } #pragma mark - 创建的无参数新线程执行的函数
void *demo(void *param){
NSLog(@"用于创建无参数线程当前线程%@",[NSThread currentThread]);
return NULL;
} #pragma mark - 创建的有参数新线程执行的函数
void *demo2(void *param){
// Implicit conversion of Objective-C pointer type 'NSString *' to C pointer type 'void *' requires a bridged cast
NSString *str = (__bridge NSString *)(param); NSLog(@"用于创建的有参数%@的线程-当前线程%@",str,[NSThread currentThread]);
return NULL;
} @end
pthread创建线程的简单演示的更多相关文章
- 【转】用Pthread创建线程的一个简单Demo
一.我们直接在COCOS2D-X自带的HelloWorld工程中添加代码.首先将Pthread的文件包含进来包括lib文件.在HelloWorld.cpp中引入头文件和库. #include &quo ...
- c++ Pthread创建线程后必须使用join或detach释放线程资源
http://www.cppblog.com/prayer/archive/2012/04/23/172427.html 这两天在看Pthread 资料的时候,无意中看到这样一句话(man pthre ...
- Python_多线程1(创建线程,简单线程同步)
threading 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法: threading.currentThread(): 返回当前的线程变量. threading.enumera ...
- C# 创建线程的简单方式:异步委托 .
定义一个委托调用的方法:TakesAWhile //定义委托要引用的方法 private static int TakesAWhile(int data, int ms) { Console.Writ ...
- 创建线程方式-pthread
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Java多线程学习总结--线程概述及创建线程的方式(1)
在Java开发中,多线程是很常用的,用得好的话,可以提高程序的性能. 首先先来看一下线程和进程的区别: 1,一个应用程序就是一个进程,一个进程中有一个或多个线程.一个进程至少要有一个主线程.线程可以看 ...
- Netty源码分析第2章(NioEventLoop)---->第1节: NioEventLoopGroup之创建线程执行器
Netty源码分析第二章: NioEventLoop 概述: 通过上一章的学习, 我们了解了Server启动的大致流程, 有很多组件与模块并没有细讲, 从这个章开始, 我们开始详细剖析netty的各个 ...
- Python创建线程
Python 提供了 _thread 和 threading 两个模块来支持多线程,其中 _thread 提供低级别的.原始的线程支持,以及一个简单的锁,正如它的名字所暗示的,一般编程不建议使用 th ...
- posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序
posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...
随机推荐
- Unity 游戏框架搭建 (六) 关于框架的一些好文和一些思考
在进行项目架构阶段,游戏框架可以解决一部分问题.剩下的架构问题还需要根据不同的项目解决.总之游戏框架是游戏架构的一部分. 关于锤子和钉子: 最近又拿起了<代码大全>和<暗时间 ...
- 开源自己写的图片转Ascii码图工具
GitHub地址:https://github.com/qiangzi7723/img2Ascii 如果觉得不错可以给个star或者提出你的建议 img2Ascii,基于JS的图片转ASCII示意图. ...
- hibernate总结-持续更新
简介 hibernate官网:Hibernate Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思 ...
- Maven部署(linux)
1.下载 进入http://maven.apache.org/download.cgi下载.或者使用wget命令. mkdir /opt/maven cd /opt/maven wget http:/ ...
- 说声PHP的setter&getter(魔术)方法,你们辛苦了
php作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,主要以setter&getter方法为主. 首先,咱们得知道什么叫魔术方法? 官方定义为:_ ...
- 使用java语言编写窗口按钮
使用java语言编写窗口按钮 代码如下: package Day08; import java.awt.FlowLayout; import javax.swing.JButton;import ja ...
- 《javascript设计模式与开发实践》读书笔记之函数,this,闭包
一.函数基本理论 function compare(val1,val2){ return val1 - val2; }var result = compare(5,10); 1,函数的定义没什么意义, ...
- Extjs4+PHP MVC模式一(入门)
Extjs是一个js框架,可以实现大部分web页面的东西,个人理解是一款集html.css.js一体的框架,功能挺强大的.结合PHP和sql可以实现整个系统.现在来说说怎么用它.(我的项目是用的TP框 ...
- 微信小程序探索(一)
一.小程序到底是个什么鬼? 现在Android系统越用越卡的现状很头疼,手机上再也不想装太多的App,而市面上层出不穷的各种应用,有时又是我们需要用到的,怎么办呢!!微信小程序就是一种不需要下载安装即 ...
- Akka(15): 持久化模式:AtLeastOnceDelivery-消息保证送达模式
消息保证送达是指消息发送方保证在任何情况下都会至少一次确定的消息送达.AtleastOnceDelivery是一个独立的trait,主要作用是对不确定已送达的消息进行补发,这是一种自动的操作,无需用户 ...