Por que a instrução go não é executada em paralel

Estou testando este código go no meu VirtualBoxed Ubuntu 11.4

package main

import ("fmt";"time";"big")
var c chan *big.Int

func sum( start,stop,step int64) {
    bigStop := big.NewInt(stop)
    bigStep := big.NewInt(step)
    bigSum  := big.NewInt(0)
    for i := big.NewInt(start);i.Cmp(bigStop)<0 ;i.Add(i,bigStep){
        bigSum.Add(bigSum,i)
    }
    c<-bigSum           
}

func main() {
    s := big.NewInt( 0 )
    n := time.Nanoseconds()

    step := int64(4)
    c = make( chan *big.Int , int(step))
    stop := int64(100000000)
    for j:=int64(0);j<step;j++{
        go sum(j,stop,step)     
    }
    for j:=int64(0);j<step;j++{
        s.Add(s,<-c)
    }
    n = time.Nanoseconds() - n
    fmt.Println(s,float64(n)/1000000000.)
}

@Ubuntu tem acesso a todos os meus 4 núcleos. Eu verifiquei isso com a execução simultânea de vários executáveis e System Monitor. Mas quando estou tentando executar esse código, ele usa apenas um núcleo e não obtém lucro com o processamento paralel

O que estou fazendo de errado?

questionAnswers(1)

yourAnswerToTheQuestion