मेरे पास एक एमएसएमक्यू कतार की निगरानी करने वाली कई प्रक्रियाएं हैं। मैं मल्टी-स्टेप ऑपरेशंस करना चाहता हूं जैसे पहले संदेश को देखें और फिर कुछ मानदंडों के आधार पर संदेश प्राप्त करें। एक संदेश कई प्रक्रियाओं के प्राप्त मानदंड को पारित कर सकता है ताकि एक से अधिक प्रक्रिया एक ही संदेश प्राप्त करने का प्रयास कर सके। क्या ये ऑपरेशन थ्रेड सुरक्षित होंगे? यदि नहीं, तो मुझे एक प्रक्रिया को उस संदेश को प्राप्त करने में विफल होने से रोकने के लिए क्या करना चाहिए जो अन्य प्रक्रिया पहले ही प्राप्त हो चुकी है?क्या एमएसएमक्यू धागा सुरक्षित है?
उत्तर
ऑपरेशन स्वयं धागे सुरक्षित हैं। हालांकि, यदि आप एक बहु-चरण संचालन करते हैं तो आप पाएंगे कि परिणाम सुसंगत नहीं हैं (उदाहरण के लिए, यह देखने के लिए कि डेटा कतार में है या नहीं, फिर डेटा प्राप्त करने के लिए कॉल करना, केवल यह पता लगाने के लिए कि यह अब और नहीं है)।
MSDN के अनुसार:
केवल निम्न विधियों धागा सुरक्षित हैं: BeginPeek, BeginReceive, EndPeek (IAsyncResult), EndReceive (IAsyncResult), GetAllMessages, पीक, और प्राप्त करें।
कृपया ध्यान दें कि MessageQueue के लिए दस्तावेज़ के .Net 4 संस्करण में कहा गया है कि केवल GetAllMessages() थ्रेड सुरक्षित है। मुझे लगता है कि यह एक वास्तविक परिवर्तन है क्योंकि ग़लत दस्तावेज संभवतः .Net 4 दस्तावेज़ों के साथ ऑनलाइन अपडेट किया गया है। – redcalx
उल्लेखनीय रूप से भेजें() विधि मेरे यूनिट परीक्षण में थ्रेड सुरक्षित नहीं पाया गया था, संदेशक्यूयू ऑब्जेक्ट पर लॉकिंग, विभिन्न समानता आदि अपवादों को हल किया गया जो मेरे समांतर लूप में फेंक रहे थे। – Kaido
@Kaido: अनलॉक किया गया 'MessageQueue.Send()' त्रुटियों में परिणाम? या आपने जिस व्यवहार का अनुभव किया था? –
आपको इस विषय पर blog entry में रुचि हो सकती है।
संक्षेप में, एमएसएमक्यू सी ++ एपीआई थ्रेड सुरक्षित है, लेकिन सभी सिस्टम नहीं। मैसेजिंग विधियां थ्रेड सुरक्षित हैं। ब्लॉग एंट्री में मैं चर्चा करता हूं कि MessageQueue को कैसे कॉल करें। थ्रेड-सुरक्षित तरीके से भेजें।
- 1. क्या console.writeline धागा सुरक्षित है?
- 2. क्या java.lang.reflect.Method धागा सुरक्षित है?
- 3. क्या DocumentBuilder.parse() धागा सुरक्षित है?
- 4. क्या SoapHttpClientProtocol धागा सुरक्षित है?
- 5. क्या closesocket धागा सुरक्षित है?
- 6. क्या सुरक्षितरैंड धागा सुरक्षित है?
- 7. Hunspell धागा सुरक्षित है?
- 8. ACAccount धागा सुरक्षित है?
- 9. java.sql.Connection धागा सुरक्षित है?
- 10. java.util.Observable धागा-सुरक्षित है?
- 11. putStrLn धागा-सुरक्षित है?
- 12. सुरक्षाContextHolder धागा सुरक्षित है?
- 13. unmodifiableList धागा सुरक्षित है?
- 14. int है? सुरक्षित धागा?
- 15. java.util.UUID धागा सुरक्षित है?
- 16. क्या यह जावा क्लास धागा सुरक्षित है?
- 17. क्या नक्शा संरचना धागा-सुरक्षित है?
- 18. एनएसटीमर क्या यह धागा सुरक्षित है?
- 19. Enum.TryParse - क्या यह धागा सुरक्षित है?
- 20. क्या लॉग 4j धागा सुरक्षित नहीं है?
- 21. क्या एक Django सत्र धागा सुरक्षित है?
- 22. विस्तार विधि धागा सुरक्षित है?
- 23. पायथन शब्दकोश धागा सुरक्षित है?
- 24. Django मिडलवेयर धागा सुरक्षित है?
- 25. java.util.Vector serialization धागा-सुरक्षित है?
- 26. सुरक्षित धागा ढेर आकार?
- 27. धागा सुरक्षित हैश मानचित्र?
- 28. धागा सुरक्षित नक्शा जावा
- 29. क्या एमएसएमक्यू अप्रचलित है?
- 30. क्या अमरूद की अपरिवर्तनीय सूची है। बिल्डर धागा सुरक्षित है?
कृपया ध्यान दें: एमएसडीएन के अनुसार, .NET Framework 4 से आगे, 'केवल GetAllMessages विधि थ्रेड सुरक्षित है'। मैं इसे प्रतिबिंबित करने के उत्तर को अद्यतन करने का सुझाव देता हूं, ताकि पाठकों को भ्रमित नहीं किया जाएगा। – Iravanchi