Submitted by haryanto in golang

saya coba buat test waitgroup, tapi saat di run program tidak mendelay seperti time.Sleep(). Apakah ada kesalahan dari IDE yang digunakan? tapi saya coba di go playground pun hasilnya sama

'

package main

import (

"fmt"

"sync" )

func printText(text string, wg *sync.WaitGroup){

for i:=0; i<5; i++{

fmt.Println(text)

}

wg.Done()

}

func main(){

var wg sync.WaitGroup

wg.Add(1)

go printText("Halo", &wg)

wg.Add(1)

go printText("Dunia", &wg)

wg.Wait() }

2

Comments

You must log in or register to comment.

muhammad_ridwan_fauzi wrote (edited )

Sebelumnya kalau boleh tau, output yang seharusnya keluar jika program berjalan dengan benar itu gimana?

Karena saya mendapatkan 2 output yang berbeda dengan kode yang dicantumkan di atas
Link gambar : https://ibb.co/9YkDLzd

1

haryanto OP wrote

outputnya tidak tentu karena menggunakan goroutine, benar outpunya seperti itu namun yang saya pahami dari konsep Waitgroup ini sama mendelay seperti menggunakan time.Sleep() tetapi saat dijalankan hanya langsung memberikan semua output tanpa delay perdetik dari outputnya

1

muhammad_ridwan_fauzi wrote (edited )

Ah i see, dari sebuah post yang aku baca di situs reddit https://www.reddit.com/r/golang/comments/qag3sc/syncwaitgroup_vs_timesleep_arent_they_the_same_in/

sync.WaitGroup is a synchronization mechanism that guarantees that one goroutine can await another(or more than one) routines to finish execution.

sync.WaitGroup akan membuat goroutine delay sampai routine lain selesai dieksekusi

time.Sleep just stops processing until the time has expired.

sedangkan time.Sleep() itu perintah untuk delay(pause) program di titik tertentu dengan waktu yang ditentukan

Jadi untuk kasus di kode yang dicantumkan di atas

Jika misalnya ditambahkan "time.Sleep(3 * time.Second)" diantara printText Halo dan Dunia, goroutine printText Halo akan berjalan bersamaan (karena Waitgroup), lalu ada delay selama 3 detik (karena time.Sleep()), dan setelah itu baru goroutine printText Dunia dijalankan bersamaan (karena Waitgroup)
#CMIIW

1

haryanto OP wrote

ooh ternyata seperti itu, baik terimakasih yaa

1