01
Goroutine ve Kanallar
Hafif bir eşzamanlı yürütme biriminin başlatılmasıyla durmasının ayrı iki iş olması, kanalın değer aktarırken aynı anda eşzamanlama sağlaması, tamponun engelleme davranışını nerede değiştirip nerede değiştirmediği, birden çok kanal üzerinde beklemenin dal seçimi, ve kapatmanın bir sonlanma sinyali olarak taşıdığı bilgi.
- 01 Goroutine On iki goroutine'in yalnız 2'si kendi durdu; 5'i başka bir goroutine'in yaptığı bir işi bekleyip geldiği için, 2'si bir bağlamın iptal edilmesiyle, 3'ü hiç durmadan: kursun bağlayıcı dağılımı bu derste üretiliyor. Bir goroutine başlatmak tek satırdır ve o satır ne zaman duracağını hiç söylemez — durma kararı çoğunlukla goroutine'in kendi gövdesinde değil, başka birinin yaptığı bir işte duruyor. Sınırlayıcı ölçüm: kendi durdu sınıfı da bir sözleşmedir, çünkü gövdesi biten bir goroutine bunu kimseye kendiliğinden bildirmiyor.
- 02 Kanallar Bir kanal aynı satırda iki iş birden yapar: bir değeri bir goroutine'den ötekine taşır ve iki goroutine'in aynı noktada buluşmasını zorlar. Tamponsuz bir kanala gönderim, karşı tarafta bir alıcı hazır olana kadar hiç tamamlanmaz; alıcı hiç yoksa deneme kalıcı olarak geçmez. Sınırlayıcı ölçüm: kanal bir kuyruk değildir, çünkü aktarılan değer kopyalanır ve gönderen tarafın gönderimden sonraki değişikliği alıcıya hiçbir zaman ulaşmaz.
- 03 Tamponlu ve Tamponsuz Kanallar Bir kanalın kapasitesi, engellemenin nerede başladığını değiştirir: kapasite dolana kadar gönderim hiç beklemeden geçer, dolduğunda tamponsuz kanaldaki gibi engeller. Üç kapasitede beş deneme gönderiminin kaçının engellenmeden geçtiği ölçülüyor. Sınırlayıcı ölçüm: tampon eşzamanlamayı kaldırmıyor, yalnız erteliyor — tamponlu bir kanala gönderim tamamlandığında gönderen, alıcının o değeri aldığını hâlâ bilmiyor.
- 04 select Deyimi Birden çok kanal üzerinde aynı anda beklemenin karşılığı select deyimidir: yalnız bir dal hazırsa o dal belirlenimci biçimde seçilir, hiçbiri hazır değilse ve bir default dalı varsa o dal seçilir. Yazım sırası bir öncelik taşımaz. Sınırlayıcı ölçüm: iki dal aynı anda hazırsa seçim rastgeledir ve bu durum koşturulmuyor, yalnızca modelleniyor — rastgelelik dilin kendi kararı.
- 05 Kanal Kapatma ve Aralık Bir kanalın kapatılması bir sonlanma sinyalidir: kapanan kanalda range biter, kapanan kanaldan doğrudan alım sıfır değer ve false döner. Dört alım biçiminin (açık, kapalı-dolu, kapalı-boş, tekrar kapalı-boş) yanıtı bunu ölçüyor. Kapatma sorumluluğu her zaman göndericidedir. Sınırlayıcı ölçüm: kapalı bir kanala gönderim de, bir kanalı ikinci kez kapatmak da panikler; ikisi de recover ile yakalanıp yalnız panik=true/false olarak yazılıyor.