GLAST

A comparison between concurrency and parallelism in Golang

By

Martin Elias Quintero Osorio

Manuela Castrillón Medina

the original idea...

BLAST

the original idea...

BLAST

BLAST

BLAST

BLAST

BLAST

concurrency vs. parallelism

GOLANG

Programming language created at Google

- Golang is open-source but backed up by a large corporation

- Many big companies used it for their projects (Google, Dropbox, Soundcloud, Docker, Cloudflare, BBC...)

- It’s fast (to learn, to develop in, to compile, to deploy, to run)

- Go is a modern language

- Golang is simple

- Good cross-platform support

- Go is safe

- Rapid development and growing community

- It’s concurrent

GOROUTINES

Lightweight thread of execution.

package main

import (
	"fmt"
	"time"
)

func say(s string) {
	for i := 0; i < 5; i++ {
		time.Sleep(100 * time.Millisecond)
		fmt.Println(s)
	}
}

func main() {
	go say("world")
	say("hello")
}
/*
    world
    hello
    hello
    world
    world
    hello
    hello
    world
    world
    hello
*/

GOMAXPROCS

Limits the number of operating system threads that can execute user-level Go code simultaneously

func GOMAXPROCS(n int) int

Glast

We will count the lines quantity in a large file using a basic master - worker model in Golang in four different ways:

  1. Linear
  2. Using goroutines (concurrency)
  3. Using GOMAXPROCS (parallelism)
  4. Using goroutines & GOMAXPROCS

Glast - results

Glast - results

Glast - conclusions

More info...

https://github.com/ManuCastrillonM/glast

ThANK YOU!

Questions?

GLAST

By Manu Castrillón