आप कंसीडर और मल्टी-थ्रेडिंग का अभ्यास कैसे करेंगे? [बन्द है]


33

मैं कंसीडर, मल्टी-थ्रेडिंग और "फ्री लंच खत्म हो गया" के बारे में पढ़ रहा हूं । लेकिन मुझे अभी तक अपनी नौकरी में एमटी का उपयोग करने की संभावना नहीं है।

मैं इस प्रकार उन सुझावों के बारे में तलाश कर रहा हूं जो मैं कुछ ओपन-सोर्स परियोजनाओं में अभ्यास या भागीदारी के माध्यम से सीपीयू भारी एमटी के कुछ अभ्यास प्राप्त करने के लिए कर सकता हूं।

धन्यवाद।

संपादित करें: मैं ओपन-सोर्स प्रोजेक्ट्स में अधिक रुचि रखता हूं जो सीपीयू-सीपीयू कार्यों के लिए एमटी का उपयोग करता है, या केवल एल्गोरिदम जो एमटी का उपयोग करने के लिए दिलचस्प हैं, किताबों या कागजों के बजाय जो केवल थ्रेड्स, म्यूटेक्स और ताले जैसे टूल का वर्णन करते हैं, या MT को उत्तरदायी GUI के लिए कैसे उपयोग किया जा सकता है ...



5
प्रश्न: आप कंसीडर और मल्टी थ्रेडिंग का अभ्यास कैसे करेंगे? A: करतब दिखाने से
स्टीवन ए। लोव

@ उत्तर: वास्तव में ऐसा नहीं है।
रॉबर्ट हार्वे

"मुफ्त दोपहर का भोजन खत्म हो गया है" लिंक मृत है
उपयोगकर्ता

अब ठीक होना चाहिए ...
जेवियर नोडेट

जवाबों:


15

जोसफ अलबहारी का लेख थ्रेडिंग इन सी # उन सबसे अच्छे संसाधनों में से एक है जिन्हें मैंने देखा है।

सामग्री की तालिका नीचे है। ध्यान दें कि टास्क पैरेलल लाइब्रेरी जैसे कुछ विषय .NET के लिए विशिष्ट हैं, लेकिन इसका अधिकांश भाग अन्य भाषाओं, विशेष रूप से जावा पर लागू होता है।

GETTING STARTED
Introduction and Concepts
Join and Sleep
How Threading Works
Threads vs Processes
Threading’s Uses and Misuses
Creating and Starting Threads
Passing Data to a Thread
Naming Threads
Foreground vs Background
Thread Priority
Exception Handling
Thread Pooling
Thread Pooling via TPL
Thread Pooling Without TPL
Optimizing the Thread Pool
BASIC SYNCHRONIZATION
+ Synchronization Essentials
+ Locking
+ Thread Safety
+ Event Wait Handles
+ Synchronization Contexts
USING THREADS
+ Event-Based Asynch Pattern
+ BackgroundWorker
+ Interrupt and Abort
+ Safe Cancellation
+ Lazy Initialization
+ Thread-Local Storage
+ Timers
ADVANCED THREADING
+ Nonblocking Synchronization
+ Signaling with Wait and Pulse
+ The Barrier Class
+ Reader/Writer Locks
+ Suspend and Resume
+ Aborting Threads
PARALLEL PROGRAMMING
+ Parallel Programming
+ Why PFX?
+ PLINQ
+ The Parallel Class
+ Task Parallelism
+ Working with AggregateException
+ Concurrent Collections
+ SpinLock and SpinWait

आप यहाँ जॉन स्कीट के ट्यूटोरियल पर भी नज़र डाल सकते हैं: http://www.yoda.arachsys.com/csharp/threads/


3
मैं आपके उत्तर में जॉन स्कीट के सी # उत्परिवर्ती पेज को जोड़ता हूं

1
दूसरा, अल्बहारी के 5 अध्याय बेहद मददगार थे। अभ्यास करने के लिए, यहां एक सरल व्यायाम है - WCF (यदि आप जानते हैं), और एक साधारण यूआई का उपयोग करके मल्टीप्लेयर टिक-टैक-टो गेम बनाएं और प्रत्येक खिलाड़ी से प्रतिक्रियाओं के साथ यूआई नियंत्रण को अपडेट करने का प्रयास करें। क्या आपने फ़ायरफ़ॉक्स कोड की जाँच की है?
नारायण

क्या आप इस बारे में और अधिक व्याख्या करना चाहेंगे कि यह पूछे गए प्रश्न का उत्तर देने के लिए क्या करता है और इसकी अनुशंसा क्यों करता है? "केवल-लिंक का जवाब देता" काफी स्टैक एक्सचेंज पर स्वागत करते हैं नहीं कर रहे हैं
कुटकी

1
@gnat: मैंने अपने उत्तर में सामग्री की तालिका चिपका दी।
रॉबर्ट हार्वे

जॉन स्कीट के ट्यूटोरियल का लिंक काम नहीं कर रहा था (मुझे एज़्योर 404 पेज मिल रहा था) - यहाँ इसका एक संग्रह है: web.archive.org/web/20181010053742/http://www.yoda.arachsys.com /…
आर्टऑफवर्फ

13

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


3
+1 अच्छी किताब। और यह Java Concurrency प्रैक्टिस में है, एक्शन नहीं।
टेलोंक्स

8

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


4

मैंने पाया कि जो डफी द्वारा विंडोज पर समवर्ती प्रोग्रामिंग बहुत मददगार है। बहुत गहराई है। यह किसी भी घूंसे को नहीं खींचता है, इसलिए आपको वास्तव में यह महसूस करना है कि पैर में खुद को गोली मारने के कितने तरीके हैं। इसने मुझे सतर्क रहने में मदद की, जो सबसे अच्छी सलाह है कि मैं किसी को भी एमटी ऐप से शुरू कर सकता हूं।


2

समवर्ती और समानता के बीच अंतर है। कॉनकरीयर एक समय में एक से अधिक काम करने की क्रिया है, जैसे 2 फाइलें लिखना। समानांतरवाद कई कोर का उपयोग करके कार्यक्रमों को गति देने का कार्य है।

हालाँकि जब यह संगामिति की बात आती है, तो कोई मुफ्त दोपहर का भोजन नहीं होता है, समानता में दोपहर का भोजन निश्चित रूप से अधिक मुक्त हो रहा है, http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell जैसे घटनाक्रम देखें


2
आपका भेद गलत है। सम्‍मिलितता समयावधि में कई कार्यों को पूरा करने का कार्य है, जबकि किसी भी समय एक से अधिक कार्य करना जरूरी नहीं है । समानांतरवाद किसी भी समय एक से अधिक कार्य करने का कार्य है।
असद सईदुद्दीन

यदि वे ओवरलैप करते हैं, तो आप एक समय में एक से अधिक काम करने की प्रक्रिया में हैं।
dan_waterworth

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

मैंने नहीं कहा कि वे एक साथ हो रहे थे। मैंने कहा कि एक समय में एक से अधिक चीजें करना।
dan_waterworth

एक समय में एक से अधिक काम करना एक साथ दो काम करने के समान है। यदि एक निश्चित समय में कई चीजें हो रही हैं, तो वे एक साथ हो रही हैं।
असद सईदुद्दीन

1

इस साइट के कुछ अच्छे प्रोजेक्ट उदाहरण हैं। www.planet-source-code.com

बस एक भाषा चुनें और बहु ​​सूत्रण के लिए खोज करें। आपको उपलब्ध सोर्स कोड वाली कई परियोजनाओं को देखना चाहिए।


मुझे आश्चर्य है कि यह अभी तक मतदान नहीं हुआ है। यह एकमात्र ऐसा उत्तर है जिसे मैंने देखा था कि "कैसे समानांतर और समवर्ती प्रोग्रामिंग को लागू करें" सवाल पर केंद्रित है। हर दूसरा जवाब "अवधारणाओं को कैसे सीखा जाए" सवाल को संबोधित करता है, जो एक अलग सवाल है।
योशिय्याह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.