Go (golang) Advanced Tutorials - Mutex and Waitgroup, Console Input

Опубликовано: 18 Февраль 2021
на канале: Ambasoft Java
1,233
28

#golang #go #concurrency #waitgroups #mutex

Console input
--------------------------
inputdemo.go
-----------------------
package main
import (
"bufio"
"os"
"fmt"
)
func main(){
reader := bufio.NewReader(os.Stdin)
scanner := bufio.NewScanner(os.Stdin)
text,_ := reader.ReadString('\n') //Read a line
fmt.Println(text)

c,size,_:=reader.ReadRune() //Read single char
fmt.Println(c)
fmt.Println(size)

scanner.Scan() //Console input
fmt.Println(scanner.Text())

}


Waitgroup
-------------------
waitdemo.go
---------------------
package main
import (
"fmt"
"sync"
)
var count=0
func countHandler(myWaitGroup *sync.WaitGroup){
count++;
myWaitGroup.Done(); //Notify waitgroup of completion
}
func main(){
var myWaitGroup sync.WaitGroup

for i:=1;i<500;i++ {
myWaitGroup.Add(1) //Wait group counter incremented
go countHandler(&myWaitGroup)
}

myWaitGroup.Wait()
fmt.Println("Value :",count)
}



mutexdemo.go
------------------------
package main
import (
"fmt"
"sync"
)
var count=0
func countHandler(myWaitGroup *sync.WaitGroup,mutex *sync.Mutex){
mutex.Lock() //Mutual Exclusive Lock
count++;
mutex.Unlock() //Releases lock
myWaitGroup.Done(); //Notify waitgroup of completion
}
func main(){
var myWaitGroup sync.WaitGroup
var mutex sync.Mutex

for i:=1;i<=500;i++ {
myWaitGroup.Add(1) //Wait group counter incremented
go countHandler(&myWaitGroup,&mutex)
}

myWaitGroup.Wait()
fmt.Println("Value :",count)
}


Смотрите видео Go (golang) Advanced Tutorials - Mutex and Waitgroup, Console Input онлайн, длительностью часов минут секунд в хорошем качестве, которое загружено на канал Ambasoft Java 18 Февраль 2021. Делитесь ссылкой на видео в социальных сетях, чтобы ваши подписчики и друзья так же посмотрели это видео. Данный видеоклип посмотрели 1,233 раз и оно понравилось 28 посетителям.