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
Максимальное число задач обработки для каждой базовой запланированной задачи, используемой парой.