对大量的短时间的任务进行分区的操作是在这里完成的
TaskPartitions
01 Syntax
Microsoft.VisualBasic.Parallel.Linq.TaskPartitions
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| PartTokens | 2 | 根据任务总量计算出所需要的线程的数量 |
| SplitIterator | 1 | Performance the partitioning operation on the input sequence. |
| Partitioning | 2 | 进行分区之后返回一个长时间的任务组合 |
| SplitIterator | 1 | |
| Partitioning | 2 | |
| Partitions | 1 |
03 Members
PartTokens(
Int32, Int32)根据任务总量计算出所需要的线程的数量
Remarks
假设所有的任务都被平均的分配到每一个线程之上
Parameters
| Name | Type | Description |
|---|---|---|
source | Int32 | - |
num_threads | Int32 | - |
SplitIterator``1(
IEnumerable(Of ``0), Int32, Boolean)Performance the partitioning operation on the input sequence. (请注意,这个函数适用于数量非常多的序列。对所输入的序列进行分区操作,parTokens函数参数是每一个分区里面的元素的数量)
Remarks
对于数量较少的序列,可以使用TaskPartitions.SplitIterator()进行分区操作, 该函数使用数组的Array.ConstrainedCopy()方法进行分区复制,效率较高
由于本函数需要处理大量的数据,使用Array的方法会内存占用较厉害,所以在这里更改为List操作以降低内存的占用
Type Parameters
| Name | Description |
|---|---|
T |
Parameters
| Name | Type | Description |
|---|---|---|
source | IEnumerable(Of ``0) | - |
parTokens | Int32 | 每一个分区之中的元素数量 |
Partitioning``2(
IEnumerable(Of ``0), Int32, Func(Of ``0, ``1))进行分区之后返回一个长时间的任务组合
Type Parameters
| Name | Description |
|---|---|
T |
Parameters
| Name | Type | Description |
|---|---|---|
parts | IEnumerable(Of ``0) | 函数参数是每一个分区里面的元素的数量 |
Partitioning``2(
IEnumerable(Of ``0), Int32, Func(Of ``0, ``1), Func(Of ``0, Boolean))进行分区之后返回一个长时间的任务组合
Type Parameters
| Name | Description |
|---|---|
T |
PartTokens(
Int32)SplitIterator(
IEnumerable(Of T), Int32, Boolean)Partitioning(
IEnumerable(Of T), Int32, Func(Of T, out))Partitioning(
IEnumerable(Of T), Int32, Func(Of T, out), Func(Of T, Boolean))Partitions(
IEnumerable(Of T), Int32, Func(Of T, Boolean))