来自百度百科
POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了建立和操纵线程的一整套API。在类Unix操做系统(Unix、Linux、Mac OS X等)中,都使用Pthreads做为操做系统的线程。Windows操做系统也有其移植版pthreads-win32。java
#import <pthread.h>复制代码
/** pthread 建立线程 参数含义: 1.指向线程标识符的指针; 2.设置线程属性; 3.线程运行函数的起始地址(函数指针); 4.运行函数的参数; 返回值: 若线程建立成功,则返回0。若线程建立失败,则返回出错编号; */
int pthread_create(pthread_t _Nullable * _Nonnull __restrict, const pthread_attr_t * _Nullable __restrict, void * _Nullable (* _Nonnull)(void * _Nullable), void * _Nullable __restrict);复制代码
其中微信
简单实例:函数
#import "ViewController.h"
#import <pthread.h>
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//声明一个pthread
pthread_t pthreadId = NULL;
//number为要传入执行函数的参数值
int number = 10;
//建立线程
int result = pthread_create(&pthreadId,
NULL,
run,
&number);
//根据结果,作相关操做
if ( result == 0 ) {
NSLog(@"线程建立成功");
} else {
NSLog(@"线程建立失败:%d", result);
}
}
void *run(void *args)
{
int number = (int)(*((int *)args));
NSLog(@"%@,number=%d", [NSThread currentThread], number);
return NULL;
}
@end
复制代码
打印结果:ui
2019-07-07 17:08:14.591579+0800 NSThreadDemo[1817:45496] 线程建立成功
2019-07-07 17:08:14.591740+0800 NSThreadDemo[1817:45553] <NSThread: 0x60000211a700>{number = 3, name = (null)},number=10复制代码
关于上面执行函数的参数,能够传入OC对象,不过要作相应类型的转换,好比传NSString对象:spa
NSString *string = @"hui";
int result = pthread_create(&pthreadId,
NULL,
run,
(__bridge void *)(string));
执行函数:
void *run(void *args) {
NSString *string = (__bridge NSString *)args;
NSLog(@"%@,string=%@", [NSThread currentThread], string);
return NULL;
}复制代码
关于__bridge,我会在后续的文章中讲到,到时候将文章地址贴与此。操作系统
id与void *的区别:
id:指向任意一个Objective-C类的对象指针,Objective-C类,Objective-C类,Objective-C类;
void *:指向任何其余数据类型的指针;线程
C和OC之间传递数据的时候,须要桥接(__bridge),桥接是告诉编译器如何管理内存;指针
over!rest
此文章来源与第三方转载code
想咨询的同窗能够加做者微信,