September 2026 Go Meetup

Meetup #87 on September 16 in person at Edmonton Unlimited at 6:00 pm.

Please RSVP at Meetup

News

Agenda

Unbounded Concurrency

Peter Preeper gave a guided tour of concurrency in Go by evolving a TCP port scanner through ten stages — from a naive sequential version to a bounded, cancellable, fan-out/fan-in pipeline. Along the way he demonstrated the classic go trap (goroutines that outlive the program), synchronizing with sync.WaitGroup (including Go 1.25's WaitGroup.Go), why unbounded concurrency blows up, and how to bound it with a worker pool and a semaphore. Later versions added timeouts, composed small stages into a pipeline, and applied fan-out/fan-in with graceful shutdown.

Key points:

  • Start simple; only add concurrency when it pays off.
  • Always know when your goroutines are done.
  • Bound your concurrency — unbounded goroutines exhaust resources.
  • Use directional channels to express intent in APIs.
  • Compose pipelines from small stages; use fan-out/fan-in for throughput.
  • Handle timeouts/cancellation and shut down gracefully.

presentation

Open Table

Open table discussion.

Future Topics Discussion

Open discussion on topic for future talks, workshops, activities.

Events

  • Edmonton Go Meetup October