Share via


ConcurrentExclusiveSchedulerPair コンストラクター

定義

ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

オーバーロード

ConcurrentExclusiveSchedulerPair()

ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

ConcurrentExclusiveSchedulerPair(TaskScheduler)

指定したスケジューラをターゲットとする ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

最大コンカレンシー レベルを使用して、指定したスケジューラを対象とする ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

まとめて処理される可能性のあるスケジュールされたタスクの最大コンカレンシー レベルおよび最大数を使用して、指定したスケジューラを対象とする ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

ConcurrentExclusiveSchedulerPair()

ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

public:
 ConcurrentExclusiveSchedulerPair();
public ConcurrentExclusiveSchedulerPair ();
Public Sub New ()

次の例は、コンストラクターを使用して ConcurrentExclusiveSchedulerPair 新しい ConcurrentExclusiveSchedulerPair オブジェクトを作成する方法を示しています。 このコード例は、「 方法: データフロー ブロックでタスク スケジューラを指定する」 に関する記事で提供されるより大きな例の一部です。

// 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)

適用対象

ConcurrentExclusiveSchedulerPair(TaskScheduler)

指定したスケジューラをターゲットとする ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

public:
 ConcurrentExclusiveSchedulerPair(System::Threading::Tasks::TaskScheduler ^ taskScheduler);
public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler);
new System.Threading.Tasks.ConcurrentExclusiveSchedulerPair : System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.ConcurrentExclusiveSchedulerPair
Public Sub New (taskScheduler As TaskScheduler)

パラメーター

taskScheduler
TaskScheduler

このペアを実行するターゲット スケジューラ。

適用対象

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

最大コンカレンシー レベルを使用して、指定したスケジューラを対象とする ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

public:
 ConcurrentExclusiveSchedulerPair(System::Threading::Tasks::TaskScheduler ^ taskScheduler, int maxConcurrencyLevel);
public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler, int maxConcurrencyLevel);
new System.Threading.Tasks.ConcurrentExclusiveSchedulerPair : System.Threading.Tasks.TaskScheduler * int -> System.Threading.Tasks.ConcurrentExclusiveSchedulerPair
Public Sub New (taskScheduler As TaskScheduler, maxConcurrencyLevel As Integer)

パラメーター

taskScheduler
TaskScheduler

このペアを実行するターゲット スケジューラ。

maxConcurrencyLevel
Int32

同時実行するタスクの最大数。

適用対象

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

まとめて処理される可能性のあるスケジュールされたタスクの最大コンカレンシー レベルおよび最大数を使用して、指定したスケジューラを対象とする ConcurrentExclusiveSchedulerPair クラスの新しいインスタンスを初期化します。

public:
 ConcurrentExclusiveSchedulerPair(System::Threading::Tasks::TaskScheduler ^ taskScheduler, int maxConcurrencyLevel, int maxItemsPerTask);
public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler, int maxConcurrencyLevel, int maxItemsPerTask);
new System.Threading.Tasks.ConcurrentExclusiveSchedulerPair : System.Threading.Tasks.TaskScheduler * int * int -> System.Threading.Tasks.ConcurrentExclusiveSchedulerPair
Public Sub New (taskScheduler As TaskScheduler, maxConcurrencyLevel As Integer, maxItemsPerTask As Integer)

パラメーター

taskScheduler
TaskScheduler

このペアを実行するターゲット スケジューラ。

maxConcurrencyLevel
Int32

同時実行するタスクの最大数。

maxItemsPerTask
Int32

ペアにより使用される、基となるスケジュールされたタスクごとに、処理されるタスクの最大数。

適用対象