CERN Computing Seminar

Concurrency at work with Go

by Francesc Campoy (source{d})

Europe/Zurich
31-3-004 - IT Amphitheatre (CERN)

31-3-004 - IT Amphitheatre

CERN

105
Show room on map
Description

High Energy and Nuclear Physics (HENP) libraries are now required to be increasingly multi-thread-safe, if not multi-thread-friendly and multi-threaded. This is usually done using the new constructs and library components offered by the C++11 and C++14 standards. These components are however quite low-level (threads, mutexes, locks, ...) and hard to use and compose, or easy to misuse.

However, Go -- a somewhat new language -- provides a set of better building blocks for tackling concurrency: goroutines and channels. This language is now used by the cloud industry at large; docker/moby, rkt, Kubernetes, OpenShift, etc... are obvious flagships for Go. It is also used in other interesting places like SpaceX's telemetry monitoring system and in the New York Times', YouTube's or Disney's content delivery infrastructures.

In this talk, we will describe the building blocks of Go and see how they are combined to easily create concurrent programs that grow with grace, are fast to compile and deploy, but also easy to reason about (and debug).

We will conclude by demonstrating Go's concurrency principles by using Mandelbrot sets as an example of CPU-heavy task, showing how the language can help make our programs faster.

About the speaker

Francesc Campoy is currently VP of Developer Relations at source{d}, and worked previously as Senior Developer Advocate at Google. He is a software engineer with extensive experience on C++ developing, and specially interested on software architecture and design.

Specialties: Design patterns, software design (UML, RUP) and architecture, advanced C++ (stl, templates, debugging, profiling). Heterogeneous education background (AI, computer graphics, algebra and mathematics).

About Go
More information
Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×