Skip to content

Instantly share code, notes, and snippets.

@zachmu
Created August 23, 2024 20:24
Show Gist options
  • Save zachmu/0209f3437bdda512b8c6170acb07d239 to your computer and use it in GitHub Desktop.
Save zachmu/0209f3437bdda512b8c6170acb07d239 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"sync/atomic"
"time"
"github.com/sirupsen/logrus"
)
const factor = 3
var sum = &atomic.Int32{}
func main() {
// logrus.SetLevel(logrus.DebugLevel)
_4chan := make(chan chan chan chan int)
go sendChanChanChan(_4chan)
go receiveChanChanChan(_4chan)
time.Sleep(500 * time.Millisecond)
fmt.Printf("%d ^ 5: %d", factor, sum.Load())
}
func sendChanChanChan(c chan chan chan chan int) {
for range factor {
go func() {
logrus.Debug("starting 3chan producer")
_3chan := make(chan chan chan int)
sendChanChan(c, _3chan)
}()
}
}
func sendChanChan(_4chan chan chan chan chan int, _3chan chan chan chan int) {
_4chan <- _3chan
for range factor {
go func() {
logrus.Debug("starting 2chan producer")
_2chan := make(chan chan int)
sendChan(_3chan, _2chan)
}()
}
}
func sendChan(_3chan chan chan chan int, _2chan chan chan int) {
_3chan <- _2chan
for range factor {
go func() {
logrus.Debug("starting chan producer")
_1chan := make(chan int)
send(_2chan, _1chan)
}()
}
}
func send(_2chan chan chan int, _1chan chan int) {
_2chan <- _1chan
for range factor {
go func() {
logrus.Debug("starting int producer")
for range factor {
go func() {
logrus.Debug("sending int")
_1chan <- 1
}()
}
}()
}
}
func receiveChanChanChan(c chan chan chan chan int) {
for _3chan := range c {
for range factor {
logrus.Debug("starting 3chan consumer")
go receiveChanChan(_3chan)
}
}
}
func receiveChanChan(c chan chan chan int) {
for _2chan := range c {
for range factor {
logrus.Debug("starting 2chan consumer")
go receiveChan(_2chan)
}
}
}
func receiveChan(c chan chan int) {
for _1chan := range c {
for range factor {
logrus.Debug("starting 1chan consumer")
go receive(_1chan)
}
}
}
func receive(c chan int) {
for s := range c {
logrus.Debug("received int")
sum.Add(int32(s))
}
}
@iDigitalFlame
Copy link

this is amazing lmao

@jensenak
Copy link

jensenak commented Aug 28, 2024

This is one of those cases where hitting the "report abuse" button almost makes sense... 🤣

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment