0
使用案例:GCD中的計時鎖?
- 有很多應該處理的請求。
- 處理每個請求所用的時間會有所不同。
- 請求是爲了同時處理(現在他們被推入
dispatch_get_global_queue
得到的全局隊列中)。 - 請求來自同一客戶端優選來應從CA進行同步處理,例如,RCA1的處理應該開始處理之前完成RCA2,同時RCB1,rcd3,正在處理中。
rca i:客戶的要求a。 - 如果處理請求時間過長,即超過
TIME_OUT
,則來自同一客戶端的其他請求可能開始處理。
使用dispatch_get_global_queue
併爲每個客戶端一個串行隊列void dispatch_after( dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block)
當完成RCA1處理,但when
尚未到來將是最優的。
有每個客戶一個串行隊列並不能滿足5.
我知道,GCD is based on a different paradigm但有在GCD pthread_mutex_timedlock或lockBeforeDate或Lock.tryLock任何等效?
如何使用GCD實現由定時鎖提供的功能?
Grand Central Dispatch (GCD) Reference
是的,好像'dispatch_semaphore's是要走的路。 在這種特殊情況下,等待工作執行證明效果更好,我們並不期望來自同一客戶的許多請求。等待提交作業會增加複雜性或使提交線程等待。 – user454322