Skip to content

Concurrency helpers for dealing with arbitrary numbers of channels and goroutines

Notifications You must be signed in to change notification settings

Inspiravetion/Multi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi

Concurrency helpers for dealing with arbitrary numbers of channels and goroutines.

  //Start a new Multi Stream with 30 goroutines; 10 producers, 10 processors, and 10 consumers
  //Have the producer goroutines multiplex their sends across 5 channels with a buffer size of two
  New_Stream(10, 10, 10).Produce(5, 2, func(prod_idx int, chans *Send_Set) {
  
    //Each producer sends "Hello" 5 times
    for i := 0; i < 5; i++ {
      chans.Send("Hello")
    }
  
  //Have the processer goroutines multiplex their sends across 5 channels with a buffer size of two
  }).Process(5, 2, func(data interface{}, chans *Send_Set) {
  
    //Each processer sends "Hello World!"
    chans.send(fmt.Sprintf("%s World!", data)
  
  //Start consumers and block this goroutine until they finish
  }).Consume_And_Wait(func(data interface{}) {
  
    //Print "Hello World!"
    msg := data.(string)
    fmt.Println(msg)
  
  })
  
  //"Hello World!" has been printed 50x by this point
  fmt.Println("All Producer, Processer, and Consumer goroutines done.")

About

Concurrency helpers for dealing with arbitrary numbers of channels and goroutines

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published