संगामिति और बहु-थ्रेडेड अनुप्रयोगों के बारे में सीखने के लिए सबसे अच्छे संसाधन क्या हैं? [बन्द है]


16

मुझे एहसास हुआ कि जब यह बहु-थ्रेडेड अनुप्रयोगों और समवर्ती प्रोग्रामिंग की बात आती है, तो मुझे एक बड़े पैमाने पर ज्ञान अंतराल है। मैंने अतीत में कुछ मूल बातें कवर की हैं, लेकिन ज्यादातर यह मेरे दिमाग से चला गया लगता है, और यह निश्चित रूप से एक क्षेत्र है जिसे मैं चाहता हूं, और इसके बारे में अधिक जानकार होना चाहिए।

समवर्ती अनुप्रयोगों के निर्माण के बारे में सीखने के लिए सबसे अच्छे संसाधन क्या हैं? मैं एक बहुत ही व्यावहारिक उन्मुख व्यक्ति हूं, इसलिए अगर कहा जाए कि किताब में ठोस उदाहरण बेहतर हैं, लेकिन मैं सुझावों के लिए तैयार हूं। मैं व्यक्तिगत रूप से स्यूडोकोड या सी ++ में काम करना पसंद करता हूं, और खेल के विकास के लिए एक तिरछा सबसे अच्छा होगा, लेकिन इसकी आवश्यकता नहीं है।


आप "स्यूडोकोड में काम करना" पसंद करते हैं? मुझे आशा है कि आपके लिए काम करता है! :)
logc

जवाबों:


6

ये वे पुस्तकें हैं जिन्हें मैंने हाल ही में उपयोगी पाया है:

Java Concurrency प्रैक्टिस में - Java के बहुत से संगतों के लेखक के द्वारा। थ्रेड के खतरों और नुकसान के बारे में कुछ हद तक जावा-विशिष्ट, लेकिन बहुत स्पष्ट और जानकारीपूर्ण।

कंसीडर की कला - शीर्षक के रूप में एक चौंकाने वाला सैद्धांतिक ग्रंथ नहीं है, वास्तव में उपयोगी सलाह और उदाहरणों के बजाय एक व्यापक और डाउन-टू-अर्थ संकलन।

JVM पर प्रोग्रामिंग कंजरेन्सी - यह वास्तव में एक शानदार सैद्धांतिक ग्रंथ है, लेकिन बहुत, बहुत पठनीय और व्यावहारिक है। यदि आपको यह जानने की जरूरत है कि एसटीएम या अभिनेता क्या हैं, उनकी ताकत और कमजोरियां क्या हैं और क्यों , यह पुस्तक आपको बताएगी।

कई समर्पित उपयोगिता पुस्तकालय हैं जैसे कि इंटेल थ्रेडिंग बिल्डिंग ब्लॉक्स या ऐप्पल के ग्रांड सेंट्रल स्टेशन - इनमें आमतौर पर अपने स्वयं के समर्पित मैनुअल होते हैं, जो आमतौर पर काफी अच्छे होते हैं, और यदि आप उनके साथ कुछ बड़ा करना चाहते हैं तो वैसे भी पढ़ना अनिवार्य है।


4

मैं इस मुक्त सूत्रण संसाधन जो Albahari उत्कृष्ट द्वारा डाल पाया है ...

C # में थ्रेडिंग

इसका झुकाव C # की ओर है लेकिन अवधारणाएं पूरी तरह से अन्य भाषाओं पर लागू हैं। वह ट्यूटोरियल को अंग्रेजी और कई अन्य भाषाओं में पीडीएफ डाउनलोड के रूप में भी प्रदान करता है। मैं उदाहरण कोड के संयोजन, कोड के चरण स्पष्टीकरण और उत्कृष्ट अनुक्रम और उदाहरणों के साथ राज्य आरेखों के कारण इसकी सिफारिश करूंगा।

ट्यूटोरियल पांच भागों में है:

इसकी पुस्तक यहां उपलब्ध है: C # 4.0 इन नटशेल (अध्याय 23 और 24)


1
+1, यह मेरी हमेशा की तरह "जाना-टू" सूत्रण / संगामिति / समानांतरवाद के लिए संदर्भ .NET में
मैथ्यू राजा

4

कई संगामिति मॉडल हैं, ताकि आप यह तय करने से पहले कि आप कौन सा विकल्प चुनें, बेहतर होगा। उसके लिए, मैं सेवन वीक में सात सेवन कंज्यूर मॉडल पुस्तक की सिफारिश करता हूं : जब थ्रेड्स अनवार । समीक्षाओं और टीओसी की जांच करें और आप देख सकते हैं कि यह एक अच्छी पुस्तक क्यों है। और यह हालिया (2014) भी है।


1

C ++ मानक में अब थ्रेडिंग सुविधाएं हैं। इसलिए यदि आप C ++ में सीखना चाहते हैं, तो मैं सुझाव देता हूं कि जेनेरिक थ्रेडिंग ट्यूटोरियल पर जाने से पहले नई भाषा सुविधा की एक सरल समीक्षा पढ़ें। फिर वापस जाएं और बाद में अधिक विस्तार से मानक की समीक्षा करें।

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

हालांकि यह सीधे गेम प्रोग्रामिंग में आपकी मदद नहीं करेगा, लेकिन मैं कुछ एमपीआई ट्यूटोरियल (क्षमा करें, कोई विशेष अनुशंसा नहीं) देखने की सलाह दूंगा। हालांकि थ्रेड्स के साथ सही समवर्ती कोड लिखना मुश्किल लगता है, लेकिन संदेश पारित करने के साथ ऐसा करना आसान लगता है। अप्रत्यक्ष रूप से, आशा है कि विभिन्न संगामिति मॉडल की खोज से आपके कोड को थ्रेड-सुरक्षित रखने के लिए अपने स्वयं के विचार प्रक्रिया में मदद मिलेगी।


1

संगामिति के बारे में जानने के लिए, उस भाषा का उपयोग करें जो संगामिति के लिए डिज़ाइन की गई थी। गोलंग एक अच्छा विकल्प है क्योंकि इसमें कंसीडर के लिए बिल्ट-इन सपोर्ट है और सी-जैसे सिंटैक्स है जो अधिकांश प्रोग्रामर के लिए भाषा सीखना आसान बनाता है।

इसमें मैसेज पासिंग, म्यूटेक्स आदि हैं जो आपकी लगभग सभी संगणक जरूरतों को कवर करते हैं और जिनकी अन्य भाषाओं में अधिक जटिल समकक्षताएं हैं।

उदाहरण के लिए, aC में MPI का उपयोग करके चर में एक और सूत्र से एक इंट प्राप्त करना :

MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD,MPI_STATUS_IGNORE);

जाने में दूसरे (उपयोगकर्ता) थ्रेड से चर में एक इंट प्राप्त करना:

a := <-c

व्यवहार में जाने के लिए, अपने दौरे पर जाएं, जहां आप अपने ब्राउज़र में गो कोड लिख, संकलित और चला सकते हैं।

tour.golang.org

समसामयिक भाग पर जाने के लिए

http://tour.golang.org/concurrency/1

मेरे पूर्व प्रोफेसर ने प्रथम वर्ष के सीएस छात्रों के लिए एक बहुत ही लोकप्रिय लघु पाठ्यक्रम आयोजित किया। एक त्वरित, लेकिन पूरी तरह से, संक्षिप्तता का परिचय, मैं निश्चित रूप से इसे पढ़ने की सलाह देता हूं।

समवर्ती प्रोग्रामिंग के मूल तत्व

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.