0
0
Goprogramming~10 mins

Concurrent execution model in Go - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Concurrent execution model
Start main function
Launch goroutine
Main continues
Goroutine runs concurrently
Both finish independently
Program ends
Shows how the main function starts, launches a goroutine that runs concurrently, and both run independently until completion.
Execution Sample
Go
package main
import "fmt"
func main() {
  go fmt.Println("Hello from goroutine")
  fmt.Println("Hello from main")
}
This Go program runs two print statements concurrently: one in a goroutine and one in the main function.
Execution Table
StepActionGoroutine StateMain StateOutput
1Start main functionNot startedRunning
2Launch goroutine with go keywordStarted (concurrent)Running
3Main prints "Hello from main"Running concurrentlyPrinted "Hello from main"Hello from main
4Goroutine prints "Hello from goroutine"Printed "Hello from goroutine"RunningHello from goroutine
5Main function endsMay still be running or finishedEnded
6Program ends when main exitsEnds if not finishedEnds
💡 Program ends when main function finishes, goroutine may or may not finish if main exits too early.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
mainRunningRunningPrinted outputPrinted outputEnded
goroutineNot startedStartedRunningPrinted outputMay end or still running
Key Moments - 3 Insights
Why might the goroutine's output not appear before the program ends?
Because the main function can finish and exit the program before the goroutine runs or completes, as shown in step 6 of the execution_table.
Does the goroutine block the main function from continuing?
No, the goroutine runs concurrently and does not block main, so main continues immediately after launching the goroutine (step 3).
How do we know the goroutine started?
At step 2, the goroutine is launched with the go keyword, changing its state from 'Not started' to 'Started (concurrent)' in the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output after step 3?
ANo output yet
B"Hello from main"
C"Hello from goroutine"
DBoth outputs printed
💡 Hint
Check the Output column at step 3 in the execution_table.
At which step does the goroutine print its message?
AStep 4
BStep 2
CStep 3
DStep 5
💡 Hint
Look at the Output and Goroutine State columns in the execution_table.
If the main function ends immediately after launching the goroutine, what might happen?
AGoroutine output always appears
BProgram waits for goroutine to finish
CGoroutine may not run or finish before program ends
DMain function blocks until goroutine finishes
💡 Hint
Refer to the exit_note and step 6 in the execution_table.
Concept Snapshot
Go's concurrent execution model uses goroutines.
Use 'go' keyword to start a goroutine.
Goroutines run independently and concurrently.
Main function does not wait for goroutines by default.
Program ends when main finishes, possibly before goroutines.
Use synchronization to wait for goroutines if needed.
Full Transcript
This example shows how Go runs code concurrently using goroutines. The main function starts and launches a goroutine with the 'go' keyword. Both the main function and the goroutine run at the same time. The main function prints its message and continues. The goroutine prints its message independently. The program ends when the main function finishes, which might happen before the goroutine completes. This means the goroutine's output might not always appear if the main function exits too soon. Goroutines do not block the main function. To ensure goroutines finish, synchronization methods are needed.