iOS 開發 多執行緒詳解之Pthread實現多執行緒
阿新 • • 發佈:2019-02-04
pthread基礎
- 實現多執行緒的技術方案之一.
- pthread是POSIX thread的簡寫.表示跨平臺的執行緒介面.
- 多執行緒的開發框架,由於是跨平臺的C語言框架,在蘋果的標頭檔案中並沒有詳細的註釋.
pthread建立子執行緒步驟
1.匯入標頭檔案
#import <pthread.h>
2.pthread建立子執行緒要使用的函式
/*
pthread_create(pthread_t _Nullable *restrict _Nonnull, const pthread_attr_t *restrict _Nullable, void * _Nullable (* _Nonnull)(void * _Nullable), void *restrict _Nullable)
*/
1.引數
引數1 : 指向新執行緒的識別符號的指標,傳入新執行緒識別符號的地址
引數2 : 指向新執行緒的屬性的指標,傳入屬性的地址, 此時傳入空地址/空指標 == NULL
引數3 : 指向函式的指標,傳入函式名(函式的地址) : 是新執行緒要執行的函式/任務
void * (*) (void *)
返回值 函式名 函式引數
引數4 : 傳入到新執行緒要執行的函式的引數
2.返回值 : int ,如果返回0 ,代表建立新執行緒成功,如果返回非0 ,代表建立新執行緒失敗
很多C語言的框架,並不是非0即真
成功的結果只有一個,但是失敗的原因會有很多
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 執行緒除錯
NSLog(@"touchesBegan %@",[NSThread currentThread]);
[self pthreadDemo];
}
- (void)pthreadDemo
{
// 執行緒除錯
NSLog(@"pthreadDemo %@" ,[NSThread currentThread]);
// 引數1 : 新執行緒的識別符號,這個函式會自動的給 ID 賦值
pthread_t ID;
int result = pthread_create(&ID, NULL, demo, NULL);
if (0 == result) {
NSLog(@"OK");
} else {
NSLog(@"NO OK");
}
}
/// 新執行緒要執行的函式
void *demo(void *param)
{
// 執行緒除錯
NSLog(@"demo %@",[NSThread currentThread]);
return NULL;
}