͜Μͳײ͡
parallels := 0
done := make(chan bool)
(தུ)
if *pcreStatic {
parallels++
go downloadAndExtractParallel(&pcreBuilder, done)
}
if *openSSLStatic {
parallels++
go downloadAndExtractParallel(&openSSLBuilder, done)
}
if *zlibStatic {
parallels++
go downloadAndExtractParallel(&zlibBuilder, done)
}
parallels++
go downloadAndExtractParallel(&nginxBuilder, done)
(தུ)
for i := 0; i < parallels; i++ {
<-done
}
Why is cachectl written in Go?
• طଘͷπʔϧ͕͍ʹ͔ͬͨ͘
• e.g. σΟϨΫτϦࢦఆ͕Ͱ͖ͳ͍
• σʔϞϯԽͯ͠ఆظతʹ࣮ߦ͔͚ͨͬͨ͠ͲɺͦΜͳػ
ೳ࣋ͬͯΔπʔϧ͕ͳ͔ͬͨ
• γεςϜίʔϧ͕cgosyscallͰ؆୯ʹݺͼग़ͤΔ
• ϖʔδΩϟογϡͷใऔಘղ์ʹmmap
mincoreɺposix_fadviseͷγεςϜίʔϧ͕ඞཁ