class Concurrent::Promises::BlockedPromise
def self.new_blocked_by2(blocker1, blocker2, *args, &block)
def self.new_blocked_by2(blocker1, blocker2, *args, &block) blocker_delayed1 = blocker1.promise.delayed_because blocker_delayed2 = blocker2.promise.delayed_because delayed = if blocker_delayed1 && blocker_delayed2 # TODO (pitr-ch 23-Dec-2016): use arrays when we know it will not grow (only flat adds delay) LockFreeStack.of2(blocker_delayed1, blocker_delayed2) else blocker_delayed1 || blocker_delayed2 end promise = new(delayed, 2, *args, &block) blocker1.add_callback_notify_blocked promise, 0 blocker2.add_callback_notify_blocked promise, 1 promise end