2010-03-28 19 views
5

मैं एक खेल है जहाँ प्रत्येक खिलाड़ी है बदल जाता है और क्या हो रहा है के लिए 'ध्यान देना' की जरूरत है अनुकरण करने के लिए है।एकाधिक धागे या धागे के साथ प्रक्रिया

अब तक, मैं जानता हूँ कि मैं प्रत्येक खिलाड़ी, एक है कि खिलाड़ी की बारी और अन्य ध्यान देने बजे तक सोने के लिए दो धागे की आवश्यकता होगी।

मेरा प्रश्न है: मैं एक 'कांटा' और कांटा पर धागे के रूप में प्रत्येक खिलाड़ी काम करना चाहिए, या बस खिलाड़ी के लिए कुछ सूत्र बना सकते हैं और किसी भी तरह से संबद्ध?

यह पहली बार मैं संगामिति, संकेतबाहु और धागे के साथ काम किया तो मैं अच्छी प्रथाओं और प्रोग्रामिंग शैली के बारे में निश्चित नहीं हूँ।

+0

मेरा अनुमान है कि आपका असाइनमेंट यह है कि आप प्रति खिलाड़ी एक थ्रेड का उपयोग करते हैं। यदि ऐसा है, तो आपको अपने प्रश्न में यह स्पष्ट करना चाहिए। साथ ही, प्रत्येक खिलाड़ी एक व्यक्ति है और खेल के लिए उसका इंटरफ़ेस थ्रेड है, या प्लेयर थ्रेड है? इसके अलावा, आपको इसे चलाने के लिए किस मंच पर जाना है? मुझे कुछ * निक्स लगता है। – nategoose

+0

@nateg, क्योंकि उसे कोड की आवश्यकता नहीं है, प्लेटफार्म सभी अप्रासंगिक है। –

+0

@ हेंक: क्या विंडोज़ का कांटा() है? मुझे लगता है कि मंच उस अवशोषण के स्तर पर प्रासंगिक है। – Duncan

उत्तर

3

आप एक विशाल धार्मिक युद्ध के किनारों पर ठोकर खाई किया है, प्रश्न से संबद्ध

चाहिए घटना पर ही आधारित कार्यक्रमों से अधिक थ्रेड का उपयोग कर या एक ही घटना पाश का उपयोग कर लिखा जा?

धागे शिविर का मानना ​​है कि अलग-अलग संस्थाओं, "खिलाड़ियों" की तरह, और अधिक आसानी से जब वास्तविक धागे के रूप में लिखा है, संभवतः explcitly प्रोसेसर दे जब वे इसकी ज़रूरत नहीं है क्रमादेशित रहे हैं। खिलाड़ी के राज्य के बारे में जानकारी स्थानीय चरों में और यहां तक ​​कि प्रोग्राम काउंटर में भी संग्रहीत की जा सकती है। लेकिन धागे के साथ आपको परमाणुता, डेडलॉक और समवर्ती प्रोग्रामिंग के अन्य सुखों के बारे में चिंता करनी पड़ सकती है।

घटना चालित शिविर का मानना ​​है कि यह जब हर इकाई हर घटना का जवाब देने में सक्षम है एक पूरा आवेदन सही पाने के लिए बहुत सरल है, और उस संस्था समय की राशि यह कार्रवाई करने के लिए की जरूरत है के लिए प्रोसेसर के कुल नियंत्रण हो जाता है घटना (जो बेहतर परिमित था, और आमतौर पर कम होना बेहतर था)। समवर्तीता के बारे में कोई चिंता नहीं है क्योंकि प्रत्येक घटना हैंडलर परमाणु रूप से निष्पादित होता है, लेकिन एक प्रोग्रामिंग लागत होती है: जब ईवेंट हैंडलर समाप्त होता है, तो इसकी सभी प्रक्रियाएं निकलती हैं, और इसलिए इसके राज्य के बारे में जानकारी को आवंटित ऑब्जेक्ट के क्षेत्र में संग्रहीत किया जाना चाहिए ढेर।

धागे की कहानी चमकती रहती है जब किसी इकाई के पास जटिल नियंत्रण प्रवाह होता है या बहुत सारे अमूर्तता का उपयोग करना चाहता है — इनमें से दोनों धागे के बिना कोड करना मुश्किल है। घटनाओं की कहानी चमकती है जब हैंडलर काफी सरल होते हैं — यह बहुत अच्छा है कि प्रत्येक हैंडलर इसके बारे में चिंता किए बिना परमाणु रूप से निष्पादित करता है, और यह संस्थाओं के बीच संचार को सरल बनाता है।

अपने काम के साथ आगे बढ़ने से पहले, पता लगाने के जो धार्मिक समूह के लिए अपने प्रशिक्षक अंतर्गत आता है

चूंकि आपने धागे के बारे में पूछा है, इसलिए मैं डेव हैंनसन के C Interfaces and Implementations में धागे और चैनल पुस्तकालयों की अत्यधिक अनुशंसा करता हूं। सॉफ्टवेयर नि: शुल्क है, और पुस्तक — खरीदने यह कई अन्य मॉड्यूल है कि सी में अविश्वसनीय रूप से किसी को भी लिख गृहकार्य असाइनमेंट के लिए उपयोगी होगा

मैं एक 'कांटा' और धागे के रूप में प्रत्येक खिलाड़ी काम करना चाहिए शामिल लायक है कांटा, या सिर्फ खिलाड़ी के लिए कुछ धागे बनाते हैं और उन्हें किसी भी तरह से जोड़ते हैं?

जब तक आप fork का उपयोग करने के लिए कहा गया है, मैं इसे से बचने चाहते हैं — यूनिक्स प्रक्रियाओं के बीच संवाद स्थापित करने के लिए तंत्र है कि उपयोग करने के लिए सुखद नहीं हैं। यदि आप हैंनसन लाइब्रेरी प्राप्त कर सकते हैं, तो मैं कहूंगा कि प्रति खिलाड़ी एक थ्रेड बनाएं, और खिलाड़ियों को हंससन के चैनल का उपयोग करके एक-दूसरे के साथ संवाद करें (और गेम सर्वर के साथ, जो थ्रेड भी होना चाहिए)।

+0

कांटा का उपयोग आवश्यक नहीं है, और चूंकि सामान्य सुझाव यूनिक्स प्रक्रियाओं के बीच संचार से बचने के लिए है, मैं धागे के लिए जाऊंगा। मैं जितनी जल्दी हो सके असाइनमेंट को समाप्त करने की कोशिश करूंगा और प्रक्रिया के तरीके को देखने के लिए समय लगेगा (केवल यह जानना कि वे कितना अप्रिय हो सकते हैं)। उत्तर और पुस्तक सुझाव के लिए धन्यवाद। – sergiobuj

1
एक बारी आधारित स्थिति (खेल) आप वास्तव में सूत्र, फाइबर/coroutines की जरूरत नहीं है क्या करेंगे (बेहतर) में

'ध्यान देना' जब आप फिर से कार्य करने के लिए तैयार कर रहे हैं एक धागा, राज्य (-Changes) करने के लिए बस का उपयोग की आवश्यकता नहीं है।

संबंधित मुद्दे