Concurrent Programming with Go — 1

Hande Ebrar Gunesdogdu
2 min readSep 5, 2022

Bu seride sizlerle Golang özelinde concurrent programming konusunda yaptığım araştırmalarımda elde ettiğim notları paylaşıyor olacağım.

Keyifli okumalar! ✌️

Concurrency, tek işlem birimi kullanılarak sistemin yanıt süresini azaltmak için kullanılan bir yaklaşımdır. CPU aynı anda yalnızca bir görev üzerinde çalışabilir. Eğer birden fazla görev verilirse (örneğin kod yazarken müzik dinlemek) bu görevler arasında geçiş yapar. Bu geçiş o kadar hızlıdır ki kullanıcı tarafından fark edilmez. Böylece tek seferde tamamlanan iş miktarını artırır.

Concurrency ve parallelism birbirlerinden farklı kavramlardır. Çoğu işlemcinin birden fazla çekirdeği vardır. Bazı durumlarda da bir makinede birden fazla işlemci olabilir. Birden fazla işlemcinin aynı anda birçok işlemi gerçekleştirmesine parallelism denir.

Birden fazla yapılacak işin olması concurrency, bu işlerin aynı anda yapılabilir olması parallelism olarak özetleyebiliriz.

Golang’de concurrency, fonksiyonların birbirinden bağımsız olarak çalışma yeteneğidir. Diğer programlama dilleri, thread kullanarak concurrency sağlar. Golang’in built-in concurrency yapıları vardır: goroutine ve channels.

Goroutine, kodun geri kalanıyla aynı anda çalışabilen bir fonksiyondur ve thread’ler ile karşılaştırıldığında çok daha az maliyetlidir. Concurrent programming için Go’da yaygın olarak kullanılırlar ve Go runtime tarafından yönetilirler.

Bu yazıda concurrency’i daha anlaşılır kılmak adına parallelism ile arasındaki farklara değindik ve Go’da concurrent programming’e ufak bir giriş yaptık. Serinin bir sonraki yazısında tekrar buluşmak dileğiyle! 🌟

References and Links

⭐ Concurrency in Go, Katherine Cox-Buday

Concurrent and Parallel Programming, Joe Armstrong

Golang Concurrency

Concurrency

⭐ Concurrent Programming with Go, By Mike Van Sickle

--

--