我正在嘗試使用GCD作爲幾十個原子屬性的替代品。我記得在WWDC上他們在談論GCD可以用於高效的事務鎖定機制。如何使用GCD輕量級事務鎖定資源?
在我的OpenGL ES runloop方法,我把所有的繪圖代碼由dispatch_sync
上的自定義顯示串行隊列執行的塊。 runloop被一個CADisplayLink調用,這是我在主線程中發生的知識。
有實例變量,並且都繪製而且還有控制什麼會被吸引使用的屬性。問題是必須有一些鎖定來防止併發問題,以及在兩個繪製幀之間的主線程中事務性地查詢和修改OpenGL ES場景的狀態。
我可以通過在該序列隊列執行塊修改一組屬性,以事務的方式與GCD。
但似乎我不能讀取值到主線程,使用GCD,同時阻塞執行繪圖代碼的隊列。 dispatch_synch
沒有返回值,但我想要訪問演示文稿值之間的繪製兩個框架的讀取和寫入。
難道這barrier
件事,他們都在談論什麼?這是如何運作的?
您可能會發現原子屬性的工作方式也一樣,並且您不需要重構代碼。 –