Ruby on Rails 5.2 - ActiveRecord::ConnectionAdapters::ConnectionPool::Queue

वर्ग ActiveRecord :: ConnectionAdapters :: ConnectionPool :: कतार




ruby

वर्ग ActiveRecord :: ConnectionAdapters :: ConnectionPool :: कतार

जनक:
Object

थ्रेडसेफ़, निष्पक्ष, LIFO कतार। इसका उपयोग ConnectionPool द्वारा किया जाता है जिसके साथ यह एक मॉनिटर साझा करता है।

पब्लिक क्लास के तरीके

नया (ताला = Monitor.new) दिखाएँ स्रोत
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 86
def initialize(lock = Monitor.new)
  @lock = lock
  @cond = @lock.new_cond
  @num_waiting = 0
  @queue = []
end

सार्वजनिक प्रवृत्ति के तरीके

add (एलिमेंट) शो सोर्स
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 109
def add(element)
  synchronize do
    @queue.push element
    @cond.signal
  end
end

element को कतार में जोड़ें। कभी ब्लॉक नहीं करता।

# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 94
def any_waiting?
  synchronize do
    @num_waiting > 0
  end
end

परीक्षण करें कि क्या कोई सूत्र वर्तमान में कतार में प्रतीक्षा कर रहा है।

# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 124
def clear
  synchronize do
    @queue.clear
  end
end

कतार से सभी तत्वों को निकालें।

डिलीट (एलिमेंट) शो सोर्स
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 117
def delete(element)
  synchronize do
    @queue.delete(element)
  end
end

यदि element कतार में है, तो उसे हटा दें, या nil

# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 102
def num_waiting
  synchronize do
    @num_waiting
  end
end

वर्तमान में इस कतार पर प्रतीक्षा कर रहे थ्रेड्स की संख्या लौटाता है।

मतदान (समय समाप्त = शून्य) स्रोत दिखाएं
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 144
def poll(timeout = nil)
  synchronize { internal_poll(timeout) }
end

कतार के प्रमुख को हटा दें।

यदि timeout नहीं दिया गया है, तो हेड को हटा दें और वापस लौटें यदि उपलब्ध तत्वों की संख्या वर्तमान में प्रतीक्षा कर रहे थ्रेड्स की संख्या से अधिक से अधिक है (यानी लाइन में आगे नहीं कूदें)। अन्यथा, nil लौटें।

यदि timeout दिया गया है, तो कोई तत्व उपलब्ध नहीं होने पर, किसी तत्व के उपलब्ध होने के लिए timeout सेकंड तक प्रतीक्षा timeout

जन्म देती है:

timeout सेकंड के भीतर उपलब्ध हो जाता है,