الفرق بين المراجعتين ل"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) فارغًا أم لا.

مصادر