الفرق بين المراجعتين ل"Ruby/Thread/pending interrupt-3F-i"

من موسوعة حسوب
< Ruby‏ | Thread
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: تابع النسخة <code>pending_interrupt?‎‎</code> الخاص بالصنف <code>Thread</code> في روبي}}</noinclude> تص...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Thread]]
 
[[تصنيف: Ruby Thread]]
يتحقق التابع <code>pending_interrupt?‎</code> مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا.
+
يتحقق التابع <code>pending_interrupt?‎</code> مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا [[Ruby/Thread|للمهمة الفرعية]] التي استُدعي معها.
 
 
بما أنه يمكن استخدام <code>[[Ruby/Thread/handle_interrupt|handle_interrupt]]</code> لتأجيل الأحداث غير المتزامنة، فمن الممكن استخدام هذا التابع للتحقق مما إذا كانت هناك أي أحداث مؤجلة.
 
 
 
إن أعاد هذا التابع القيمة <code>true</code>، فيمكنك إنهاء كتل ‎<code>:never</code>.
 
  
 
إذا تم إعطاء الوسيط <code>error</code> (انظر فقرة البنية العامة)، فتحقق فقط من الأحداث المؤجلة من نوع <code>error</code>.
 
إذا تم إعطاء الوسيط <code>error</code> (انظر فقرة البنية العامة)، فتحقق فقط من الأحداث المؤجلة من نوع <code>error</code>.
  
== الاستخدام ==
+
راجع صفة تابع الصنف <code>[[Ruby/Thread/pending interrupt-3F|pending_interrupt?]]‎</code>.
<syntaxhighlight lang="ruby">th = Thread.new{
 
  Thread.handle_interrupt(RuntimeError => :on_blocking){
 
    while true
 
      ...
 
      # reach safe point to invoke interrupt
 
      if Thread.pending_interrupt?
 
        Thread.handle_interrupt(Object => :immediate){}
 
      end
 
      ...
 
    end
 
  }
 
}
 
...
 
th.raise # stop thread‎</syntaxhighlight>
 
 
 
يمكن كتابة هذا المثال أيضًا بالطريقة التالية، والتي عليك استخدامها إن أردت تجنب التوقيفات (interrupts) غير المتزامنة.
 
 
 
<syntaxhighlight lang="ruby">flag = true
 
th = Thread.new{
 
  Thread.handle_interrupt(RuntimeError => :on_blocking){
 
    while true
 
      ...
 
      # reach safe point to invoke interrupt
 
      break if flag == false
 
      ...
 
    end
 
  }
 
}
 
...
 
flag = false # stop thread‎</syntaxhighlight>
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">pending_interrupt?(error = nil) → true/false‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">pending_interrupt?(error = nil) → true/false‎</syntaxhighlight>
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 
يعيد لتابع <code>pending_interrupt?‎</code>  قيمة منطقية.
 
يعيد لتابع <code>pending_interrupt?‎</code>  قيمة منطقية.
 
==أمثلة==
 
في المثال أدناه، يعالج التابع التالي تأجيل الأحداث غير المتزامنة على الفور.
 
<syntaxhighlight lang="ruby">def Thread.kick_interrupt_immediately
 
  Thread.handle_interrupt(Object => :immediate) {
 
    Thread.pass
 
  }
 
end‎</syntaxhighlight>
 
 
==انظر أيضا==
 
==انظر أيضا==
 
* التابع <code>[[Ruby/Thread/priority|priority]]</code>: يُعيد التابع <code>priority</code> أولوية [[Ruby/Thread|المهمة الفرعية]]
 
* التابع <code>[[Ruby/Thread/priority|priority]]</code>: يُعيد التابع <code>priority</code> أولوية [[Ruby/Thread|المهمة الفرعية]]
 +
* تابع الصنف <code>[[Ruby/Thread/pending interrupt-3F|pending_interrupt?]]‎:</code> يتحقق التابع <code>pending_interrupt?‎</code> مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا.
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/Thread.html#method-i-pending_interrupt-3F قسم  التابع pending_interrupt?‎ في الصنف Thread‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/Thread.html#method-i-pending_interrupt-3F قسم  التابع pending_interrupt?‎ في الصنف Thread‎ في توثيق روبي الرسمي.]

مراجعة 11:38، 6 نوفمبر 2018

يتحقق التابع pending_interrupt?‎ مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا للمهمة الفرعية التي استُدعي معها.

إذا تم إعطاء الوسيط error (انظر فقرة البنية العامة)، فتحقق فقط من الأحداث المؤجلة من نوع error.

راجع صفة تابع الصنف pending_interrupt?.

البنية العامة

pending_interrupt?(error = nil)  true/false

القيمة المُعادة

يعيد لتابع pending_interrupt?‎ قيمة منطقية.

انظر أيضا

  • التابع priority: يُعيد التابع priority أولوية المهمة الفرعية
  • تابع الصنف pending_interrupt?‎: يتحقق التابع pending_interrupt?‎ مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا.

مصادر