0
나는 Azure 서버에서 일부 데이터를 크런치하는 코드를 작성했다.병렬 루프를 만드는 올바른 방법
Parallel.ForEach(users, currentUser =>
{
int number = myrollup.CountFilmsForUsers(currentUser.UserId,distort,tend).Result;
lock(myrollup)
{
var record = new UserAnalytics();
{
UserId = currentUser.UserId,
UserFName = currentUser.FirstName,
UserLName = currentUser.LastName,
};
session.SaveOrUpdate(record);
}
});
이 병렬 루프는 9 분의 일을 : 나는 코드를 쓴 처음으로, 그것은 각 루프에 대한 선형이고 완료 될 영원히 걸릴 것이라고, 나는 다음과 같이 병렬를 사용하여 코드를 개선 , 그러나 나는 이것을 생산자/소비자 패턴을 사용하여 더 향상시키고 자한다. C#에서 Nhibernate를 사용하여이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
무언가를 병렬로 수행하면 잠금 장치가있는 루프의 몸체 대부분을 지키지 않아도 매우 평행하게되지 않습니다. – vcsjones
이 질문은 너트입니다 – vidstige
Nhibernate는 스레드로부터 안전하지 않기 때문에 이것이 원하는만큼 병렬이 아니라는 것을 알고 있습니다. 그래서 Producer/Consumer 패턴을 사용하여 읽기 전용 스레드를 만들고 SQL DB에 데이터를 쓰는 스레드를 만들고 싶습니다. – user843681