Advertisement
spider68

print number using thread in go

Aug 2nd, 2023
894
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | Source Code | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "sync"
  6. )
  7.  
  8. var (
  9.     wg            sync.WaitGroup
  10.     currentNumber = 1
  11.     mutex         sync.Mutex
  12. )
  13.  
  14. func printOdd() {
  15.     defer wg.Done()
  16.  
  17.     for {
  18.         mutex.Lock()
  19.         if currentNumber <= 10 {
  20.             if currentNumber%2 != 0 {
  21.                 fmt.Printf("Thread 1: %d\n", currentNumber)
  22.                 currentNumber++
  23.             }
  24.         } else {
  25.             mutex.Unlock()
  26.             break
  27.         }
  28.         mutex.Unlock()
  29.     }
  30. }
  31.  
  32. func printEven() {
  33.     defer wg.Done()
  34.  
  35.     for {
  36.         mutex.Lock()
  37.         if currentNumber <= 10 {
  38.             if currentNumber%2 == 0 {
  39.                 fmt.Printf("Thread 2: %d\n", currentNumber)
  40.                 currentNumber++
  41.             }
  42.         } else {
  43.             mutex.Unlock()
  44.             break
  45.         }
  46.         mutex.Unlock()
  47.     }
  48. }
  49.  
  50. func main() {
  51.     wg.Add(2)
  52.     go printOdd()
  53.     go printEven()
  54.  
  55.     wg.Wait()
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement