पर अनुमति देता है मेरे पास एक विजुअल स्टूडियो 2008 सी # .NET 3.5 प्रोजेक्ट है जहां एक वर्ग बहु-प्रसारित किसी अन्य वर्ग से ईवेंट आमंत्रण के लिए सुनता है। मुझे यह सुनिश्चित करने की ज़रूरत है कि मेरा कार्यक्रम केवल अधिकतम 10 धागे तक पहुंच की अनुमति देता है। 11 वें धागे को 10 खत्म होने तक रोकना चाहिए।एक फ़ंक्शन जो केवल एन समवर्ती धागे
myobj.SomeEvent += OnSomeEvent;
private void OnSomeEvent(object sender, MyEventArgs args)
{
// allow up to 10 threads simultaneous access. Block the 11th thread.
using (SomeThreadLock lock = new SomeThreadLock(10))
{
DoUsefulThings(args.foo);
}
}
मैं अन्य MyObj
वर्ग पर नियंत्रण की जरूरत नहीं है, इसलिए मैं वहाँ एक ThreadPool लागू नहीं कर सकते।
इसे लागू करने का सबसे अच्छा तरीका क्या है?
धन्यवाद, PaulH
+1 यह नोट करने के लिए कि आपको कोशिश/पकड़ के 'आखिरकार' ब्लॉक में सेमफोर से बाहर निकलना चाहिए। यह महत्वपूर्ण चीजें हैं- यदि आपका कोड अपवाद फेंकता है, तो आप यह सुनिश्चित करना चाहते हैं कि सेमफोर निकल जाए। –