मैं वर्तमान में एक समस्या से निपट रहा हूं जहां मुझे मौजूदा फ़ंक्शन को अवरुद्ध करने से रोकने के लिए नरक को अन्य थ्रेड में बहुत से फ़ंक्शन भेजना पड़ता है। अब मुझे आश्चर्य है कि इस कार्य को करने का सबसे तेज़ तरीका क्या है।एक विधि को अतुल्यकालिक रूप से निष्पादित करने का सबसे तेज़ तरीका?
वर्तमान में
ThreadPool.UnsafeQueueUserWorkItem
के रूप में नियमित रूप से QueueUserWorkItem की तुलना में अपने थोड़ा तेज
के साथ फंस मैं। हालांकि, मुझे डर है कि थ्रेडपूल इसे यहां अवरुद्ध कर सकता है। क्या किसी अन्य थ्रेड पर विधि कॉल भेजने का एक तेज़ तरीका है? मुझे आश्चर्य है कि इस तरह के कार्य के लिए सबसे अच्छा अभ्यास क्या है? असुरक्षित कोड कोई समस्या नहीं होगी क्योंकि यह एक परिदृश्य में है जहां पहले से ही बहुत से इंटरऑप का उपयोग किया जाता है। धन्यवाद जे।
जब आप कहते हैं कि 'तेजी' तुम्हारा मतलब है कि आप 'मुख्य' धागे पर अवरुद्ध को कम करना चाहते हैं? विशेष रूप से, वह कॉल जो पृष्ठभूमि प्रसंस्करण के लिए आइटम को कतार देता है जितनी जल्दी हो सके लौटता है? –
आपकी उल्लिखित चिंता डब्लूआरटी, थ्रेडपूल उस कॉल (या सामान्य 'सुरक्षित' एक) के लिए अवरुद्ध नहीं होता है, लेकिन यह सफलतापूर्वक कतारबद्ध होने के लिए एक बूल लौटाता है, सिद्धांत यह है कि यदि यह झूठा हो जाता है, तो हो सकता है कि आप वर्तमान धागे पर इसे निष्पादित करना चाहते हैं, या फिर बाद में कोशिश करें, या जो भी हो। –
क्या आप हर बार एक ही विधि को प्रेषित कर रहे हैं? क्या उन्हें एक-दूसरे से एसिंक संचालित करने की ज़रूरत है? क्या निर्माता/उपभोक्ता दृष्टिकोण स्वीकार्य है? (इसलिए कॉलर बस कतार में कुछ जोड़ता है)। .NET का कौन सा संस्करण इस पर है? –