Aracılığıyla paylaş


ConcurrentExclusiveSchedulerPair Sınıf

Tanım

Eş zamanlı görevlerin eşzamanlı olarak çalıştırıldığından ve özel görevlerin hiçbir zaman çalışmayabileceğine emin olurken, görevleri yürütmek için eşgüdümlü görev zamanlayıcıları sağlar.

public ref class ConcurrentExclusiveSchedulerPair
public class ConcurrentExclusiveSchedulerPair
type ConcurrentExclusiveSchedulerPair = class
Public Class ConcurrentExclusiveSchedulerPair
Devralma
ConcurrentExclusiveSchedulerPair

Örnekler

Aşağıdaki örnekte sınıfının kullanımı gösterilmektedir ConcurrentExclusiveSchedulerPair . Okuyucular zamanlayıcının eşzamanlı bölümünde çalışır. Yazıcı, zamanlayıcının özel bölümünde çalışır. Bu kod örneği, Nasıl yapılır: Veri Akışı Bloğunda Görev Zamanlayıcı Belirtme makalesinde sağlanan daha büyük bir örneğin parçasıdır.

// Create a ConcurrentExclusiveSchedulerPair object.
// Readers will run on the concurrent part of the scheduler pair.
// The writer will run on the exclusive part of the scheduler pair.
var taskSchedulerPair = new ConcurrentExclusiveSchedulerPair();

// Create an ActionBlock<int> object for each reader CheckBox object.
// Each ActionBlock<int> object represents an action that can read 
// from a resource in parallel to other readers.
// Specifying the concurrent part of the scheduler pair enables the 
// reader to run in parallel to other actions that are managed by 
// that scheduler.
var readerActions =
   from checkBox in new CheckBox[] { checkBox1, checkBox2, checkBox3 }
   select new ActionBlock<int>(milliseconds =>
   {
       // Toggle the check box to the checked state.
       toggleCheckBox.Post(checkBox);

       // Perform the read action. For demonstration, suspend the current
       // thread to simulate a lengthy read operation.
       Thread.Sleep(milliseconds);

       // Toggle the check box to the unchecked state.
       toggleCheckBox.Post(checkBox);
   },
   new ExecutionDataflowBlockOptions
   {
       TaskScheduler = taskSchedulerPair.ConcurrentScheduler
   });

// Create an ActionBlock<int> object for the writer CheckBox object.
// This ActionBlock<int> object represents an action that writes to 
// a resource, but cannot run in parallel to readers.
// Specifying the exclusive part of the scheduler pair enables the 
// writer to run in exclusively with respect to other actions that are 
// managed by the scheduler pair.
var writerAction = new ActionBlock<int>(milliseconds =>
{
    // Toggle the check box to the checked state.
    toggleCheckBox.Post(checkBox4);

    // Perform the write action. For demonstration, suspend the current
    // thread to simulate a lengthy write operation.
    Thread.Sleep(milliseconds);

    // Toggle the check box to the unchecked state.
    toggleCheckBox.Post(checkBox4);
},
new ExecutionDataflowBlockOptions
{
    TaskScheduler = taskSchedulerPair.ExclusiveScheduler
});

// Link the broadcaster to each reader and writer block.
// The BroadcastBlock<T> class propagates values that it 
// receives to all connected targets.
foreach (var readerAction in readerActions)
{
    broadcaster.LinkTo(readerAction);
}
broadcaster.LinkTo(writerAction);
' Create a ConcurrentExclusiveSchedulerPair object.
' Readers will run on the concurrent part of the scheduler pair.
' The writer will run on the exclusive part of the scheduler pair.
Dim taskSchedulerPair = New ConcurrentExclusiveSchedulerPair()

' Create an ActionBlock<int> object for each reader CheckBox object.
' Each ActionBlock<int> object represents an action that can read 
' from a resource in parallel to other readers.
' Specifying the concurrent part of the scheduler pair enables the 
' reader to run in parallel to other actions that are managed by 
' that scheduler.
Dim readerActions = From checkBox In New CheckBox() {checkBox1, checkBox2, checkBox3}
                    Select New ActionBlock(Of Integer)(Sub(milliseconds)
                                                           ' Toggle the check box to the checked state.
                                                           ' Perform the read action. For demonstration, suspend the current
                                                           ' thread to simulate a lengthy read operation.
                                                           ' Toggle the check box to the unchecked state.
                                                           toggleCheckBox.Post(checkBox)
                                                           Thread.Sleep(milliseconds)
                                                           toggleCheckBox.Post(checkBox)
                                                       End Sub, New ExecutionDataflowBlockOptions With {.TaskScheduler = taskSchedulerPair.ConcurrentScheduler})

' Create an ActionBlock<int> object for the writer CheckBox object.
' This ActionBlock<int> object represents an action that writes to 
' a resource, but cannot run in parallel to readers.
' Specifying the exclusive part of the scheduler pair enables the 
' writer to run in exclusively with respect to other actions that are 
' managed by the scheduler pair.
Dim writerAction = New ActionBlock(Of Integer)(Sub(milliseconds)
                                                   ' Toggle the check box to the checked state.
                                                   ' Perform the write action. For demonstration, suspend the current
                                                   ' thread to simulate a lengthy write operation.
                                                   ' Toggle the check box to the unchecked state.
                                                   toggleCheckBox.Post(checkBox4)
                                                   Thread.Sleep(milliseconds)
                                                   toggleCheckBox.Post(checkBox4)
                                               End Sub, New ExecutionDataflowBlockOptions With {.TaskScheduler = taskSchedulerPair.ExclusiveScheduler})

' Link the broadcaster to each reader and writer block.
' The BroadcastBlock<T> class propagates values that it 
' receives to all connected targets.
For Each readerAction In readerActions
    broadcaster.LinkTo(readerAction)
Next readerAction
broadcaster.LinkTo(writerAction)

Oluşturucular

ConcurrentExclusiveSchedulerPair()

ConcurrentExclusiveSchedulerPair sınıfının yeni bir örneğini başlatır.

ConcurrentExclusiveSchedulerPair(TaskScheduler)

Belirtilen zamanlayıcıyı ConcurrentExclusiveSchedulerPair hedefleyen sınıfının yeni bir örneğini başlatır.

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

Belirtilen zamanlayıcıyı ConcurrentExclusiveSchedulerPair en yüksek eşzamanlılık düzeyiyle hedefleyen sınıfının yeni bir örneğini başlatır.

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

Belirtilen zamanlayıcıyı ConcurrentExclusiveSchedulerPair en yüksek eşzamanlılık düzeyi ve birim olarak işlenebilen en fazla zamanlanmış görev sayısıyla hedefleyen sınıfının yeni bir örneğini başlatır.

Özellikler

Completion

Zamanlayıcı işlemeyi tamamladığında tamamlanacak bir Task alır.

ConcurrentScheduler

Bu çift üzerindeki diğer görevlerle eşzamanlı olarak çalışabilecek görevleri bu çifte zamanlamak için kullanılabilecek bir TaskScheduler alır.

ExclusiveScheduler

Bu çift üzerindeki diğer görevlerle ilgili olarak özel olarak çalışması gereken görevleri bu çifte zamanlamak için kullanılabilecek bir TaskScheduler alır.

Yöntemler

Complete()

Zamanlayıcı çiftini başka görev kabul etmemesi gerektiğini bildirir.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır