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属 ...
随机推荐
- CSS3集锦之新增选择器、圆角、阴影、透明度、transition动画、transform变形、animation动画
---恢复内容开始--- 一.CSS3新增选择器 1.nth-chlid(n)用法 selector:nth-chlid(n)指找到第n个子元素并且该元素为selector标签 <!DOCTYP ...
- 一颗简单的hibernate栗子
Hibernate是一个开源的ORM框架,顾名思义,它的核心思想即ORM(Object Relational Mapping,对象关系映射),可以通过对象来操作数据库中的信息,据说开发者一开始是不太熟 ...
- fedora下一些问题的解决方案汇总
解决fedora下一些使用问题 一 解决fedora下无法使用Fn+功能键来调整亮度的问题 在fedora下,背光的配置参数在/sys/class/backlight文件夹下,根据不同的显卡,有不同的 ...
- Oracle之plsql快速入门
打开系统输出 set serveroutput on; 只需要打开一次**书写格式 以斜杠/号 结束(基本结构) --declare --语句后面必须以;号结束 declare --用来区分变量名和表 ...
- 使用stackOfIntegers实现降序素数
使用stackOfIntegers实现降序素数 代码如下: package day06; public class TestSU { public static void main(String[] ...
- [C++ Calculator 项目] 基础运算实现
Calculator V1.1 注:这是C++计算器项目第二部分-运算 [基于初始部分增改而得] 源文件已上传至github 主要问题: Ⅰ.运算实现的问题在于( ) + - * /的优先级的处理,以 ...
- MySQL慢查询日志分析
一:查询slow log的状态,如示例代码所示,则slow log已经开启. mysql> show variables like '%slow%'; +-------------------- ...
- js实现日期显示的一些操作
1.js获取当前日期(yyyy-mm-dd) 以下代码是获取到的当前日期: var myDate = new Date(); var year = myDate.getFullYear(); //获取 ...
- 连续子序列最大和的O(NlogN)算法
对于一个数组,例如:int[] a = {4,-3,5,-2,-1,2,6,-2}找出一个连续子序列,对于任意的i和j,使得a[i]+a[i+1]+a[i+2]+.......+a[j]他的和是所有子 ...
- Round #427 A. Key races(Div.2)
time limit per test 1 second memory limit per test 256 megabytes input standard input output stand ...