Tôi có một ứng dụng .NET xử lý khoảng 300.000 bản ghi trong một đợt nhập, và phải mất một vài giây cho mỗi bản ghi vì vậy tôi muốn song song điều này. Trong đoạn mã sau, sự khác biệt giữa ProcessWithAnsycDelegates()
và ProcessWithThreadPool()
là gì?Sử dụng các đại biểu không đồng bộ hoặc ThreadPool.QueueUserWorkItem cho chủ nghĩa song song lớn?
public class ResultNotification
{ public EventHandler event Success;
public EventHandler event Fail;
internal void Notify(bool sucess) {if (success) Success(); else Fail();}
}
public static class Processor
{ public ResultNotification ProcessWithAnsycDelegates(Record record)
{ var r = new ResultNotification();
Func<Record,bool> processRecord=new RecordProcessor().ProcessRecord;
processRecord.BeginInvoke
(record
,ar => result.Notify(processRecord.EndInvoke(ar))
,null);
return r;
}
public ResultNotification ProcessWithThreadPool(Record r)
{ var r = new ResultNotification();
var rp = new RecordProcessor();
ThreadPool.QueueWorkUserItem(_=>result.Notify(rp.ProcessRecord(r)));
return r;
}
}
Những phần không được áp dụng? – bzlm