मैं सी ++ में अपने एमएमओआरजीपी में मल्टीथ्रेडिंग का उपयोग करना चाहता हूं, इस समय 5वें धागे मिल गए हैं, और मैं दो में से एक को विभाजित करना चाहता हूं, लेकिन मेरा mmorpg सर्वर वैक्टरों के भार के अनुरूप है, और क्योंकि वेक्टर थ्रेडसेफ लिखने के लिए नहीं हैं, मैं इसे ठीक से नहीं कर सकता।एमएमआरजीपी में सी में मल्टीथ्रेडिंग
क्या थ्रेड में वैक्टर का उपयोग करने का कोई विकल्प है, या वेक्टर को पढ़ने/लिखने के लिए मल्टीथ्रेड सुरक्षित बनाने का कोई तरीका है।
मैं जो कुछ भी नहीं चाहता, उसका एक उदाहरण है, इस तरह के किसी विकल्प को खोजने का प्रयास करें: जाहिर है यह वास्तविक कोड नहीं है, मैं सिर्फ एक उदाहरण बना रहा हूं।
//Thread1
//Load monster and send data to the player
globals::monstername[myid];//Myid = 1 for now -.-
senddata(globals::monstername[myid]);//Not the actual networking code, im just lazy.
//Thread2
//Create a monster and manage it
globals::monstername.push_back("FatBlobMonster");
//More managing code i cant be bothered inserting >.<
धन्यवाद, क्या आप कृपया इसका उपयोग कैसे करें और यह कैसे काम करता है? :) –
कृपया एक नज़र डालें: http://en.cppreference.com/w/cpp/thread/lock –
यह बहुत अच्छी तरह से काम नहीं करेगा। क्योंकि आप पूरी सरणी लॉक कर रहे हैं। तो जब आप एकाधिक धागे प्राप्त कर सकते हैं - वे सभी एक दूसरे पर वेक्टर तक पहुंचने की प्रतीक्षा करेंगे। तो वेक्टर पर संचालन में समान प्रदर्शन विशेषताओं की तरह होगी जैसे कि वे एक ही धागे में थे। –