मेरे पास एक .NET एप्लिकेशन है जो बैच आयात में लगभग 300,000 रिकॉर्ड संसाधित करता है, और इसमें प्रति सेकंड कुछ सेकंड लगते हैं, इसलिए मैं इसे समानांतर करना चाहता हूं। निम्नलिखित कोड में, ProcessWithAnsycDelegates()
और ProcessWithThreadPool()
के बीच क्या अंतर है?भारी समांतरता के लिए एसिंक्रोनस प्रतिनिधि या थ्रेडपूल। क्यूयूयूसर वर्कइटम का उपयोग करें?
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;
}
}
कौन सा भागों लागू नहीं कर रहे हैं? – bzlm