написал свой parallel for.
public static void ParallelFor(Action<int, int> loop, int count) {
count /= SystemInfo.processorCount;
ManualResetEvent[] events = new ManualResetEvent[SystemInfo.processorCount];
for(int i=0; i<SystemInfo.processorCount; i++) {
events[i] = InvokeLoop( loop, count*i, count*i+count );
}
WaitHandle.WaitAll( events );
}
private static ManualResetEvent InvokeLoop(Action<int, int> loop, int from, int to) {
ManualResetEvent evt = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem( arg => {
loop (from, to);
evt.Set();
} );
return evt;
}
Конечно в юнити или в моно с этим туго.
В .net есть ManualResetEventSlim, который должен быть быстрее. Да и CountdownEvent тут бы лучше подошел.
Но что есть - то есть.
Кстати, чертов MonoDevelop перестал видеть классы из System.Threading и System. Все красным выделяет и подсказки не работают(
Visual Studio 2013 юнити еще не начал поддерживать? А то старый 2012 не хочется ставить.