Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "sync"
- )
- var (
- wg sync.WaitGroup
- currentNumber = 1
- mutex sync.Mutex
- )
- func printOdd() {
- defer wg.Done()
- for {
- mutex.Lock()
- if currentNumber <= 10 {
- if currentNumber%2 != 0 {
- fmt.Printf("Thread 1: %d\n", currentNumber)
- currentNumber++
- }
- } else {
- mutex.Unlock()
- break
- }
- mutex.Unlock()
- }
- }
- func printEven() {
- defer wg.Done()
- for {
- mutex.Lock()
- if currentNumber <= 10 {
- if currentNumber%2 == 0 {
- fmt.Printf("Thread 2: %d\n", currentNumber)
- currentNumber++
- }
- } else {
- mutex.Unlock()
- break
- }
- mutex.Unlock()
- }
- }
- func main() {
- wg.Add(2)
- go printOdd()
- go printEven()
- wg.Wait()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement