के लिए थ्रेड सुरक्षा मैं धागे के बीच संवाद करने के लिए एक कतार का उपयोग कर रहा हूँ। मेरे पास एक पाठक और एकाधिक लेखक धागे हैं। मेरा सवाल यह है कि जब मैं पाठक के लिए कतार से पुश/फ्रंट/पॉप का उपयोग करता हूं तो मुझे हर बार कतार को लॉक करने की आवश्यकता होती है?एसटीएल कतार
//reader threads
getLock();
get the number of elements from the queue
releaseLock();
int i = 0;
while(i < numOfElements){
queue.front();
queue.pop();
i++
}
विचार यह है कि मैं बंद कर दिया कोड की और तब से लेखक धागा केवल कतार के पीछे से लिखते थे विवरण के स्तर को कम करना चाहते हैं और वहाँ केवल एक ही पाठक है: मैं निम्नलिखित की तरह कुछ कर सकते हैं धागा। जब तक मुझे तत्वों की संख्या मिलती है, तो मैं कतार से तत्व प्राप्त कर सकता हूं या क्या मुझे लॉक में front()
और pop()
संलग्न करने की आवश्यकता है?
C++ 0x एटोमिक्स है द्वारा दिया जाता है है, इसलिए यह प्रोग्रामर ताला मुक्त लिखने के लिए सक्षम बनाता है की एक अच्छा विवरण (थ्रेड-सुरक्षित) एल्गोरिदम, और मानक म्यूटेक्स प्रदान करता है, लेकिन इसमें बॉक्स के बाहर कुछ भी नहीं है। – GManNickG