我很新的多線程編程&可可。Obj-c/Cocoa中的互斥體
我需要一個鎖來訪問/修改一個NSMutableArray
iVar。最簡單的方法是什麼?
雖然我在這裏,你們是否有一些關於Obj-c/Cocoa的多線程編程閱讀? Thx。
我很新的多線程編程&可可。Obj-c/Cocoa中的互斥體
我需要一個鎖來訪問/修改一個NSMutableArray
iVar。最簡單的方法是什麼?
雖然我在這裏,你們是否有一些關於Obj-c/Cocoa的多線程編程閱讀? Thx。
使用@synchronized
塊:
@synchronized(MyArray)
{
// thread safe code
}
此塊不被Xcode中有時認可,但請相信我,它的作品!
欲瞭解更多信息,你可以閱讀this文章。
另一種方法是使用GCD和串行隊列。
對於您的NSArray屬性,編寫使用專用串行隊列的訪問器。設置並從後備存儲中獲取值。由於串行隊列是FIFO,並且將按順序運行這些塊,因此可以對該屬性進行線程安全訪問。
你能更清楚一些例子嗎?謝謝! – 2012-07-05 16:43:56
有點像__block id val = nil; dispatch_sync(aQueue,^ {val = [array objectAtIndex:index];});獲得一個值,dispatch_sync(aQueue,^ {[array addObject:obj];});爲二傳手。 – 2012-07-05 16:46:58
請注意'dispatch_sync'!如果從當前隊列中調用,將導致死鎖。 – 2012-07-05 16:50:22
@downvoter解釋? – 2012-07-05 16:50:31