一、PThread介紹
pthread是POSIX thread的簡(jiǎn)寫(xiě)覆劈,一套通用的多線(xiàn)程API保礼,適用于Unix、Linux责语、Windows等系統(tǒng)炮障,跨平臺(tái)、可移植坤候,使用難度大胁赢,C語(yǔ)言框架,線(xiàn)程生命周期由程序員管理白筹,iOS開(kāi)發(fā)實(shí)際中很少使用智末。
二、PThread使用
#import "ViewController.h"
#import <pthread.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/**
1.在c語(yǔ)言中徒河,沒(méi)有對(duì)象的概念系馆,對(duì)象類(lèi)型是以-t/Ref結(jié)尾的;
2.c語(yǔ)言中的void * 和OC的id是等價(jià)的;
3.在混合開(kāi)發(fā)時(shí),如果在 C 和 OC 之間傳遞數(shù)據(jù)顽照,需要使用 __bridge 進(jìn)行橋接由蘑,橋接的目的就是為了告訴編譯器如何管理內(nèi)存,MRC 中不需要使用橋接;
4.在 OC 中代兵,如果是 ARC 開(kāi)發(fā)尼酿,編譯器會(huì)在編譯時(shí),根據(jù)代碼結(jié)構(gòu)植影, 自動(dòng)添加 retain/release/autorelease裳擎。但是,ARC 只負(fù)責(zé)管理 OC 部分的內(nèi)存管理何乎,而不負(fù)責(zé) C 語(yǔ)言 代碼的內(nèi)存管理。因此土辩,開(kāi)發(fā)過(guò)程中支救,如果使用的 C 語(yǔ)言框架出現(xiàn)retain/create/copy/new 等字樣的函數(shù),大多都需要 release拷淘,否則會(huì)出現(xiàn)內(nèi)存泄漏
*/
NSLog(@"%@ ", [NSThread currentThread]);
//1.創(chuàng)建線(xiàn)程對(duì)象
pthread_t thread;
//2.創(chuàng)建線(xiàn)程
/**
參數(shù)1:線(xiàn)程標(biāo)識(shí)符的地址各墨;
參數(shù)2:線(xiàn)程的屬性;
參數(shù)3:函數(shù)指針(指向子進(jìn)程中需要執(zhí)行的函數(shù))启涯;
參數(shù)4:傳遞給子進(jìn)程的參數(shù)贬堵;
*/
NSString *param = @"參數(shù)";
int result = pthread_create(&thread, NULL, longTimeOperation, (__bridge void *)(param));
if (result == 0) {
NSLog(@"創(chuàng)建線(xiàn)程 OK");
} else {
NSLog(@"創(chuàng)建線(xiàn)程失敗 %d", result);
}
pthread_detach(thread);
}
//函數(shù)
void *longTimeOperation(void *param){
NSString *str = (__bridge NSString *)(param);
NSLog(@"%@ - %@", [NSThread currentThread], str);
return NULL;
}
打印結(jié)果: