簡體   English   中英

iOS:組織多線程的最佳方法

[英]iOS : Best way to organise multithreading

伙計們,我需要一些幫助來構建我在iOS中的多線程。

我在代碼中使用ARC。

所以基本上我需要關注

在我的主線程nstimer fire中,應在單獨的線程中執行某些方法,該線程進行一些計算並將數據放入某個ivar,另一個線程應從該ivar讀取數據並進行其他計算,即如果沒有數據第二個線程應該等待,直到有任何線程。

因此,基本上我想聽聽一些建議,使用可可線程(NSThread),GCD或Operation隊列是哪種技術最適合我的任務。

也有人可以為我提供一些有關兩個線程之間相互阻塞/同步方面的偽代碼。

由於您是說某些計算應該等待其他計算完成,因此我想說您應該查看NSOperation並為不同的操作設置依賴關系(使用addDependency)。

除非您留下問題描述的內容,否則它非常適合GCD /塊組合。 實際上,我什至不使用NSTimer(GCD提供了更好的替代方法-例如,有關創建基於GCD的計時器的信息,請參閱dispatch_source_create),但這只是您的電話,而不是問題的所在。 無論如何,有了GCD ...

- (void)handleTimer:(NSTimer *)timer {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        __block id someObject;
        // Do work...  manipulate someObject in some manner...
        // When done, invoke other thread... main thread in this case
        dispatch_async(dispatch_get_main_queue(), ^{
            // This code is running in a different thread, and can use someObject directly
        });
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM