2011-06-30 52 views
1

我想創建一個類,只要它的一個實例處於活動狀態,保持線程(工作)正在進行,並且當某人調用其上的方法時 - 那麼它應該處理這些數據在其工作線程中。
如果在操作發生時發送附加數據,則應該將這個新的數據/操作排隊,直到完成上一個處理。在線程中處理任務的類

我需要這個幫助類的每個實例來保存一個工作線程(即同一個線程應該處理所有的處理)。

我應該怎麼做呢?
NSRunLoop?同步對正在傳遞的數據塊的訪問?

回答

2

從iOS4開始,Grand Central Dispatch提供了迄今爲止最簡單和最強大的多線程編程接口。

如果您是註冊開發者,請觀看2010年的一些WWDC視頻。起初很嚇人,但實際上很簡單,很好。

+0

與上面相同的問題 - 這是否保證爲隊列中的每個操作使用相同的線程? – user204884

+1

你不必考慮這一點。你有排隊的進程,你可以談論這些進程。去研究它。 –

1

您可以直接使用NSThreads和運行循環執行此操作。但是,我會考慮使用NSOperationQueue s,每個類的實例一個,並將隊列的最大併發設置爲1.您的performTaskWithData:只會將一個NSOperation子類的新實例添加到隊列中,就是這樣。

+0

這是保證爲每個操作使用相同的線程? – user204884

+0

不,它保證任務按順序執行,但不一定在同一個線程上執行。確切的線程不再重要。 – JeremyP