2012-08-22 36 views
5

मैं एक साधारण टिक टैक टो खेल बनाने के लिए, एक एसएपी प्रणाली के उपयोगकर्ताओं के बीच खेला जा करना चाहते हैं वस्तुओं।ABAP: साझा स्मृति तुल्यकालन

मैं एक साइनअप विधि है कि एक खेल के लिए खिलाड़ियों प्रदान करती है के साथ एक CL_TTT_MANAGER वर्ग की है। मेरी कक्षा एक साझा-मेमोरी सक्षम कक्षा है, क्योंकि इसका उद्देश्य संभावित रूप से एक सैप सिस्टम के सभी उपयोगकर्ताओं द्वारा उपयोग किया जाना है।

पंजीकरण प्रक्रिया एक बहुत ही सरल कलन विधि का उपयोग किया जाता है।

1: एक "WAITING_FOR_PLAYERS" झंडा मौजूद है, और ABAP_FALSE को तैयार है। शुरू में। 2: जब कोई पहला खिलाड़ी "साइनअप" कहता है, तो ध्वज "ABAP_TRUE" पर सेट होता है। 3: जब कोई दूसरा खिलाड़ी "साइनअप" कहता है, तो ध्वज "ABAP_FALSE" पर सेट होता है और गेम इंस्टेंस बनाया जाता है।

मेरी साइनअप विधि के साथ समस्या यह है कि राज्य पर निर्भर करता है, अर्थात् यह पहले खिलाड़ी का नाम याद है, और यह एक निजी विशेषता का प्रयोग कर प्राप्त किया जाता है।

आप में से किसी के लिए जो समेकन समस्याओं के साथ काम करता है, आप डेटा रेस स्पॉट करेंगे, अर्थात् यदि दूसरे खिलाड़ी के संकेत के ठीक बाद, तीसरा व्यक्ति भी साइन अप करता है, तो पहले खिलाड़ी का नाम बदल दिया जा सकता है तीसरे का नाम।

मैं abap में इन बातों को कैसे सिंक्रनाइज़ करते हैं? इसके लिए मेरे पास क्या तंत्र है? मुझे प्रलेखन में ऐसा कुछ भी नहीं मिला है (मैं केवल 2 महीने के लिए अध्ययन कर रहा हूं)। क्या मुझे इसे स्वयं लागू करना है, या मेरी मदद करने के लिए कुछ है?

+0

अच्छी तरह से एसएपी एक कंपनी है (ओरेकल की तरह) और एबीएपी उनकी मालिकाना भाषा (जावा की तरह) है .... लेकिन केवल अपने सिस्टम प्रोग्रामिंग के लिए उपयोग की जाती है। जानकारी और सलाह के लिए –

उत्तर

3

यह कोई समस्या नहीं होनी चाहिए - तीसरे खिलाड़ी साझा स्मृति क्षेत्र में लिखने में सक्षम होने से पहले, उसे एक परिवर्तन संभाल प्राप्त करना होगा, और वह तब तक एक प्राप्त नहीं कर पाएगा जब तक कि दूसरा उपयोगकर्ता अभी भी एक बदलाव ताला सेट है। उस विषय पर अधिक विस्तृत जानकारी के लिए See the docs

ध्यान रखें कि स्थिर और भरोसेमंद साझा मेमोरी प्रोग्रामिंग एबीएपी पर्यावरण (शायद वहां किसी भी पर्यावरण में) को पूरा करने के लिए सबसे कठिन कार्यों में से एक है। मैं आपके अन्य प्रश्नों से जानता हूं कि आप एबीएपी के लिए अपेक्षाकृत नए हैं - साझा वस्तुओं के साथ शुरूआत करना शुरू करने के लिए महत्वाकांक्षी है।

+0

Thx। मैं वर्तमान में अपने प्रशिक्षण के लिए जिम्मेदार किन्ना हूं, इसलिए मैं हमेशा नहीं जानता कि जब मैं अपने कोडिंग रोमांच के दौरान एबीएपी खान क्षेत्र में कदम उठाता हूं :)। –

+0

यह एक है, मेरा विश्वास करो। यह इस प्रकार का एक चुनिंदा मेरा क्षेत्र है जो केंद्रीय-उदाहरण-केवल विकास और परीक्षण प्रणाली को पास करेगा और केवल कई अनुप्रयोग सर्वरों के साथ उत्पादन वातावरण को उड़ा देगा। चेतावनी के लिए – vwegert

+0

अच्छी तरह से thx। खतरे के बारे में नहीं सुना है, इसलिए मैं नजर रखूंगा। क्या आपको इस बारे में कोई सुझाव होगा कि 2 अलग-अलग उपयोगकर्ताओं के 2 उदाहरणों के बीच संचार अन्य तरीकों से कैसे हो सकता है (डेटाबेस acces को छोड़कर)? –