الفرق بين المراجعتين لصفحة: «Ruby/Thread/pending interrupt-3F-i»

من موسوعة حسوب
< Ruby‏ | Thread
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: تابع النسخة <code>pending_interrupt?‎‎</code> الخاص بالصنف <code>Thread</code> في روبي}}</noinclude> تص...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: تابع النسخة <code>pending_interrupt?‎‎</code> الخاص بالصنف <code>Thread</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: تابع النسخة <code>Thread.pending_interrupt?‎‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: 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>[[Ruby/Thread/pending interrupt-3F|pending_interrupt?]]</code>.
 
==البنية العامة==
إن أعاد هذا التابع القيمة <code>true</code>، فيمكنك إنهاء كتل ‎<code>:never</code>.
<syntaxhighlight lang="ruby">pending_interrupt?(error = nil) → true/false‎</syntaxhighlight>


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


== الاستخدام ==
=== <code>error</code> ===
<syntaxhighlight lang="ruby">th = Thread.new{
إذا تم إعطاء هذا المعامل، فيتحقق فقط من الأحداث المؤجلة التي من نوع <code>error</code>. القيمة الافتراضية لهذا المعامل هي: <code>nil</code>.
  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>
==القيمة المُعادة==
يعيد لتابع <code>pending_interrupt?‎</code> قيمة منطقية.


==أمثلة==
==القيمة المعادة==
في المثال أدناه، يعالج التابع التالي تأجيل الأحداث غير المتزامنة على الفور.
تعاد القيمة <code>true</code> إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا. خلا ذلك، تعاد القيمة <code>false</code>.
<syntaxhighlight lang="ruby">def Thread.kick_interrupt_immediately
==انظر أيضًا==
  Thread.handle_interrupt(Object => :immediate) {
* التابع <code>[[Ruby/Thread/priority|priority]]</code>: يُعيد أولوية [[Ruby/Thread|المهمة الفرعية]] التي استدعيت معه.
    Thread.pass
* تابع الصنف <code>[[Ruby/Thread/pending interrupt-3F|pending_interrupt?]]‎:</code> يتحقق مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا.
  }
end‎</syntaxhighlight>
==انظر أيضا==
* التابع <code>[[Ruby/Thread/priority|priority]]</code>: يُعيد التابع <code>priority</code> أولوية [[Ruby/Thread|المهمة الفرعية]]
==مصادر==
==مصادر==
*[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‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:03، 6 ديسمبر 2018

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

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

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

pending_interrupt?(error = nil)  true/false

المعاملات

error

إذا تم إعطاء هذا المعامل، فيتحقق فقط من الأحداث المؤجلة التي من نوع error. القيمة الافتراضية لهذا المعامل هي: nil.

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

تعاد القيمة true إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا. خلا ذلك، تعاد القيمة false.

انظر أيضًا

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

مصادر