RW Mutex vs Mutex

RW Mutex -> Digunakan untuk supaya beberapa function dapat membaca data yang sama secara bersamaan.

Mutex Only

package main
 
import (
    "fmt"
    "sync"
)

var (
	wg sync.WaitGroup
	m sync.Mutex
	rw sync.RWMutex
	v int = 0
)
 
func main() {
    for i := 1; i <= 10; i++ {
		fmt.Printf("\nITERASI-%d\n", i)
		wg.Add(2)

		go func() {
			m.Lock()
			fmt.Println("Write lock")
			v++
			fmt.Println("Write unlock")
			m.Unlock()
			wg.Done()
		}()

		go func() {
			m.Lock()
			fmt.Println("Read lock")
			fmt.Println(v)
			fmt.Println("Read unlock")
			m.Unlock()
			wg.Done()
		}()
    }
    
    wg.Wait()
    fmt.Println("\nFinished", v)
}

RW Mutex

Last updated