Contents
Τι είναι ο Ταυτόχρονος Προγραμματισμός (Conc… Concurrency vs Parallelism Το keyword go Τι είναι μια goroutine — και τι δεν είναι Deadlock — μια πρώτη γεύση Τι είναι ένα Channel Unbuffered vs Buffered channels — η πιο σημα… Deadlock παράδειγμα — τώρα με channel VSCode Challenge: Brute-Force Password Crack… select { case ... } for-range πάνω σε Channels Το defer sync.WaitGroup sync.Mutex — Αμοιβαίος Αποκλεισμός Το πρόβλημα: Race Condition Η λύση με Mutex sync.RWMutex — Read/Write Mutex Channels εναντίον Mutexes — Πότε το ένα, πότ… Rule of Thumb: Το τεστ της ιδιοκτησίας Η ιδέα του Future / Promise «The first response wins» Πριν το τελικό quiz Προχωρημένα Patterns & Εμβάθυνση Channel ως σήμα, όχι μεταφορέας δεδομένων Broadcast (1-to-N) με close() Channels as Mutex Locks Channels as Counting Semaphores Dialogue (Ping-Pong) Channel Encapsulated in Channel Check Lengths and Capacities of Channels Block the Current Goroutine Forever — runtim… Πρακτικά Σενάρια & Αρχιτεκτονικά Patterns Pattern 1: Worker Pool (Bounded Concurrency) VSCode Challenge: Σειρά Αποτελεσμάτων στο Wo… sync.Map Pattern 2: Fan-Out & Fan-In (Pipelines) Pattern 3: Context Cancellation (Timeouts) Pattern 4: Semaphore (Limit Concurrency) Pattern 5: Rate Limiting (Time Ticker) Pattern 6: Or-Done Channel