天天看點

iOS兩個線程間嵌套發送同步消息

運作demo工程,點選一下button,看看log輸出就懂有什麼用了。或者在第61行

加個斷點,看看堆棧,會在兩個線程都看到嵌套的RunLoop.堆棧截圖如下:

iOS兩個線程間嵌套發送同步消息
iOS兩個線程間嵌套發送同步消息

實用例子:

子線程想建立一個UIView,發同步消息到主線程建立(UIKit對象都得主線程操作),主線程建立過程中又需要去子線程執行一段代碼做些判斷,這又需要主線程發同步消息回子線程;如果使用鎖技術,這就是死鎖。

RunLoop的東西很複雜,認真看文檔最實際了。也可以重點看CFRunLoopRun和CFRunLoopStop兩個函數。

<a target="_blank" href="http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html%23//apple_ref/doc/uid/10000057i-CH16-SW1">http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW1</a>

附:

關于NSRunLoop和CFRunLoop需要注意的地方:

上一篇: 重定向
下一篇: 重定向

繼續閱讀