[
self
performselectoronmainthread
:@selector
(refreshcellforliveid:)
withobject:userinfo
waituntildone:yes];
該方法的作用是在主線程中,執行制定的方法(**塊)。
引數:@selector(refreshcellforliveid:)就是,要定義我們要執行的方法。
withobject:userinfo
定義了,我們執行refreshcellforliveid:方法時,傳入的引數物件。型別是id。(我們可以傳入任何引數)
waituntildone:yes];
指定,當前執行緒是否要被阻塞,直到主線程將我們制定的**塊(refreshcellforliveid:方法)執行完。
//執行緒佇列
dispatch_group_t
taskgroup =dispatch_group_create();
//建立乙個排程組
dispatch_queue_t
mainqueue =dispatch_get_main_queue();
//建立佇列
dispatch_group_async(taskgroup, mainqueue, ^);
dispatch_group_async(taskgroup, mainqueue, ^);
dispatch_group_async(taskgroup, mainqueue, ^);
dispatch_group_notify(taskgroup, mainqueue, ^);
dispatch_release(taskgroup);
//多執行緒,非同步獲取
//非同步獲取
//uiimageview * la1 = (uiimageview*)[self.view viewwithtag:85521];
//dispatch_queue_t queue;
//queue = dispatch_queue_create("com.example.operation", null);
//dispatch_async(queue, ^);
//
//});
多執行緒 佇列
對於編寫多執行緒的朋友來說,佇列具有天生的互斥性。在佇列裡面,乙個負責新增資料,乙個負責處理資料。誰也不妨礙誰,誰也離不開誰。所以,佇列具有天生的並行性。只針對 乙個執行緒讀,乙個執行緒寫。當不滿足這個先決條件,多執行緒也完蛋,也得進佇列加鎖,出佇列加鎖 view plain print?defin...
多執行緒 阻塞佇列
blockingqueue最終會有四種狀況,丟擲異常 返回特殊值 阻塞 超時,下表總結了這些方法 丟擲異常 特殊值阻塞 超時插入add e offer e put e offer e,time,unit 移除remove poll take poll time,unit 檢查element peek...
多執行緒 阻塞佇列
1 當佇列滿的時候,插入元素的執行緒被阻塞,直達佇列不滿。2 隊列為空的時候,獲取元素的執行緒被阻塞,直到佇列不空。生產者就是生產資料的執行緒,消費者就是消費資料的執行緒。在多執行緒開發中,如果生產者處理速度很快,而消費者處理速度很慢,那麼生產者就必須等待消費者處理完,才能繼續生產資料。同樣的道理,...