Module: DispatchQueue::DispatchSyncImpl
- Included in:
- ConcurrentQueue, SerialQueue, ThreadPoolQueue, ThreadQueue
- Defined in:
- lib/dispatch_queue_rb/mixins/dispatch_sync_impl.rb
Instance Method Summary collapse
Instance Method Details
#dispatch_barrier_sync(group: nil, &task) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dispatch_queue_rb/mixins/dispatch_sync_impl.rb', line 27 def ( group:nil, &task ) mutex, condition = ConditionVariablePool.acquire() result = nil mutex.synchronize do ( group:group ) do result = task.call() mutex.synchronize { condition.signal() } end condition.wait( mutex ) end ConditionVariablePool.release( mutex, condition ) result end |
#dispatch_sync(group: nil, &task) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/dispatch_queue_rb/mixins/dispatch_sync_impl.rb', line 13 def dispatch_sync( group:nil, &task ) mutex, condition = ConditionVariablePool.acquire() result = nil mutex.synchronize do dispatch_async( group:group ) do result = task.call() mutex.synchronize { condition.signal() } end condition.wait( mutex ) end ConditionVariablePool.release( mutex, condition ) result end |