定时锁定GCD?

时间:2012-11-20 17:16:18

标签: c multithreading pthreads grand-central-dispatch

用例

  1. 有很多请求需要处理。
  2. 处理每个请求所需的时间各不相同。
  3. 请求同时处理(现在它们被推送到由dispatch_get_global_queue获取的全局队列中)。
  4. 应同步处理来自同一客户优先的请求,例如,应在开始处理之前完成 ca rca1 的处理< em> rca2 ,同时正在处理 rcb1 rcd3 等。
    rca i :来自客户的请求a。
  5. 如果处理请求的时间太长,即超过TIME_OUT,则来自同一客户端的其他请求可以开始处理。
  6. 当rca1处理完成但dispatch_get_global_queue尚未到达时,对每个客户端使用void dispatch_after( dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block)和串行队列when将不是最理想的。

    每个客户拥有一个串行队列不会满足5。


    我知道GCD is based on a different paradigm但GCD中是否有pthread_mutex_timedlocklockBeforeDateLock.tryLock

    如何使用GCD实现定时锁提供的功能?


    Grand Central Dispatch (GCD) Reference

1 个答案:

答案 0 :(得分:0)

你可以在dispatch_semaphore上有一个超时的下一个作业块。你需要等待提交工作,不仅仅是工作执行...否则GCD会激活大量的线程,这些线程会立即等待,这不是你想要的。