Люди подскажите как сделать такую штуку.
Есть цикл который запускает некую функцию. Эта фенкцию отрабатывает 3-5 минут (зависит от множеста параметров).
Как можно запустить одновременно в потоках 10 вариантов этой функции?
чтото типа такого
foreach (string param in ParamArray)
{
//takes 3-5 mins
VeryTrickyFunction(param);
}
вот эту VeryTrickyFunction нужно запускать в потоках, но так чтобы их одновременно было не более 10.
Как только один из потоков отработает, тутже запускать слудующий.
Здравствуйте, Duke_Nuken, Вы писали:
D_N>Люди подскажите как сделать такую штуку.
D_N>...
D_N>вот эту VeryTrickyFunction нужно запускать в потоках, но так чтобы их одновременно было не более 10.
D_N>Как только один из потоков отработает, тутже запускать слудующий.
Посмотрите в сторону
семафоров.
Здравствуйте, Duke_Nuken, Вы писали:
D_N>Как можно запустить одновременно в потоках 10 вариантов этой функции?
Похоже на Parallel.Foreach. Тут сегодня вот в одной теме книжку хорошую посоветовали:
http://www.microsoft.com/downloads/details.aspx?FamilyID=86b3d32b-ad26-4bb8-a3ae-c1637026c3ee&displaylang=en.
Здравствуйте, SaZ, Вы писали:
SaZ>Посмотрите в сторону семафоров.
а лучше тредпулов
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Здравствуйте, cvetkov, Вы писали:
SaZ>>Посмотрите в сторону семафоров.
C>а лучше тредпулов
А еще лучше Task Parallel Library
... << RSDN@Home 1.2.0 alpha 4 rev. 1466 on Windows 7 6.1.7600.0>>
Здравствуйте, Mr.Cat, Вы писали:
D_N>>Как можно запустить одновременно в потоках 10 вариантов этой функции?
MC>Похоже на Parallel.Foreach.
Тут лучше будет реализовать на фьючерсах, имхо. Оформляем функции в виде фьючерсов, потом выполняем над их результатами нужную агрегацию.
... << RSDN@Home 1.2.0 alpha 4 rev. 1466 on Windows 7 6.1.7600.0>>