Mercurial > pub > ImplabNet
comparison Implab/Parallels/ArrayTraits.cs @ 101:279e226dffdd v2
code cleanup
added EnsureDispatched extension
author | cin |
---|---|
date | Thu, 06 Nov 2014 20:03:19 +0300 |
parents | 4c0e5ef99986 |
children | 5f10d54b45df |
comparison
equal
deleted
inserted
replaced
100:673947ce458a | 101:279e226dffdd |
---|---|
1 using Implab.Diagnostics; | 1 using Implab.Diagnostics; |
2 using System; | 2 using System; |
3 using System.Collections.Generic; | |
4 using System.Diagnostics; | 3 using System.Diagnostics; |
5 using System.Linq; | |
6 using System.Text; | |
7 using System.Threading; | 4 using System.Threading; |
8 | 5 |
9 namespace Implab.Parallels { | 6 namespace Implab.Parallels { |
10 public static class ArrayTraits { | 7 public static class ArrayTraits { |
11 class ArrayIterator<TSrc> : DispatchPool<int> { | 8 class ArrayIterator<TSrc> : DispatchPool<int> { |
144 | 141 |
145 var iter = new ArrayIterator<TSrc>(source, action, threads); | 142 var iter = new ArrayIterator<TSrc>(source, action, threads); |
146 return iter.Promise; | 143 return iter.Promise; |
147 } | 144 } |
148 | 145 |
149 public static IPromise<TDst[]> ChainedMap<TSrc, TDst>(this TSrc[] source, ResultMapper<TSrc, IPromise<TDst>> transform, int threads) { | 146 public static IPromise<TDst[]> ChainedMap<TSrc, TDst>(this TSrc[] source, Func<TSrc, IPromise<TDst>> transform, int threads) { |
150 if (source == null) | 147 if (source == null) |
151 throw new ArgumentNullException("source"); | 148 throw new ArgumentNullException("source"); |
152 if (transform == null) | 149 if (transform == null) |
153 throw new ArgumentNullException("transform"); | 150 throw new ArgumentNullException("transform"); |
154 if (threads <= 0) | 151 if (threads <= 0) |
155 throw new ArgumentOutOfRangeException("Threads number must be greater then zero"); | 152 throw new ArgumentOutOfRangeException("threads","Threads number must be greater then zero"); |
156 | 153 |
157 if (source.Length == 0) | 154 if (source.Length == 0) |
158 return Promise<TDst[]>.ResultToPromise(new TDst[0]); | 155 return Promise<TDst[]>.ResultToPromise(new TDst[0]); |
159 | 156 |
160 var promise = new Promise<TDst[]>(); | 157 var promise = new Promise<TDst[]>(); |