Skip to content

Commit 8fb0537

Browse files
authored
fix: buffered channel example (#239)
* fix: buffered channel example * fix: indentation * fix: accidental update
1 parent a5e094f commit 8fb0537

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

content/A-buffered-channel.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@ Berikut adalah contoh penerapan buffered channel. Program di bawah ini merupakan
1919
```go
2020
package main
2121

22-
import "fmt"
23-
import "runtime"
22+
import (
23+
"fmt"
24+
"runtime"
25+
"time"
26+
)
2427

2528
func main() {
2629
runtime.GOMAXPROCS(2)
@@ -38,7 +41,10 @@ func main() {
3841
fmt.Println("send data", i)
3942
messages <- i
4043
}
44+
45+
time.Sleep(1 * time.Second)
4146
}
47+
4248
```
4349

4450
Pada kode di atas, parameter kedua fungsi `make()` adalah representasi jumlah buffer. Perlu diperhatikan bahwa nilai buffered channel dimulai dari `0`. Ketika nilainya adalah **3** berarti jumlah buffer maksimal ada **4**.
@@ -51,6 +57,14 @@ Bisa dilihat output di atas, pada proses pengiriman data ke-4, diikuti dengan pr
5157

5258
Pengiriman data indeks ke 0, 1, 2 dan 3 akan berjalan secara asynchronous, hal ini karena channel ditentukan nilai buffer-nya sebanyak 3 (ingat, jika nilai buffer adalah 3, maka 4 data yang akan di-buffer). Pengiriman selanjutnya (indeks 5) hanya akan terjadi jika ada salah satu data dari ke-empat data yang sebelumnya telah dikirimkan sudah diterima (dengan serah terima data yang bersifat blocking). Setelahnya, pengiriman data kembali dilakukan secara asynchronous (karena sudah ada slot buffer ada yang kosong).
5359

60+
Karena pengiriman dan penerimaan data via buffered channel terjadi tidak selalu sycnrhonous (tergantung jumlah buffer-nya), maka ada kemungkinan dimana eksekusi program selesai namun tidak semua data diterima via channel `messages`. Karena alasan ini pada bagian akhir ditambahkan statement `time.Sleep(1 * time.Second)` agar ada jeda 1 detik sebelum program selesai.
61+
62+
#### • Fungsi `time.Sleep()`
63+
64+
Fungsi ini digunakan untuk menambahkan delay sebelum statement berikutnya dieksekusi. Durasi delay ditentukan oleh parameter, misal `1 * time.Second` maka durasi delay adalah 1 detik.
65+
66+
Lebih detailnya mengenai fungsi `time.Sleep()` dan `time.Second` dibahas pada chapter terpisah, yaitu [Time Duration](https://dasarpemrogramangolang.novalagung.com/A-time-duration.html).
67+
5468
---
5569

5670
<div class="source-code-link">

content/B-simple-configuration.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@ Hal tersebut memiliki beberapa konsekuensi, untuk aplikasi yang di-manage secara
229229

230230
#### • Solusi
231231

232-
Kita akan membahas solusi dari beberapa masalah di atas pada chapter terpisah, yaitu ketika masuk ke C.8.
232+
Kita akan membahas solusi dari beberapa masalah di atas pada chapter terpisah, yaitu [Best Practice Configuration Menggunakan Environment Variable
233+
](/C-best-practice-configuration-env-var)
234+
235+
---
233236

234237
<div class="source-code-link">
235238
<div class="source-code-link-message">Source code praktek chapter ini tersedia di Github</div>

examples

0 commit comments

Comments
 (0)