1. 程式人生 > >iOS 開發 多執行緒詳解之Pthread實現多執行緒

iOS 開發 多執行緒詳解之Pthread實現多執行緒

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; }