TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Shand Ramzi
NA
5
2.2k
Parallelizing method with foreach loop C#
Oct 10 2011 11:36 PM
Hello.
So I am currently working on a project and now I feel the need to try and speed up the execution. I have a method with a foreach loop in it that I wish to parallelize as efficiently as possible.
This is how it looks now:
public void Simulate()
{
List<Coordinate> Locations = retrieveLocations();
int min = int.MaxValue;
int bestX = -1, bestY = -1;
foreach (Coordinate currPos in Locations)
{
string[,] tempMap = new string[globalMap.GetLength(0), globalMap.GetLength(1)];
matrixCopy(globalMap, tempMap);
int result = processData(currPos, tempMap);
if (result < min)
{
min = result;
bestX = currPos.X;
bestY = currPos.Y;
}
}
MessageBox.Show(bestX + " " + bestY + " " + min);
}
I would like to change the foreach loop to use Parallel.ForEach or perhaps use PLINQ. My concerns are how I can find the minimal value with as little locking as possible. Also I want to preserve some other values than just the minimum.
Another issue is the globalMap, is it good to copy it like I do now? All threads can't work on the original at the same time because they change the data. But perhaps I should do the copy in my processData()-method? Any thoughts?
Reply
Answers (
5
)
How to close/Kill the already opened Main winform in C#
How to develop iphone applications in .net