͜Μͳײ͡ 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ͷγεςϜίʔϧ͕ඞཁ