Rumah >pembangunan bahagian belakang >Golang >## Bolehkah Goroutines Mempercepatkan Muat Turun Fail di Golang?
Selarikan Muat Turun Fail di Golang Menggunakan Goroutines
Soalan:
Bolehkah kita memanfaatkan goroutin untuk muat turun berbilang fail serentak?
Konteks Kod:
<code class="go">package main import ( "fmt" "io" "io/ioutil" "net/http" "net/url" "os" "path/filepath" "sync" ) // ... (existing Dropbox access token handling code) var wg sync.WaitGroup func downloadFile(file File, token TokenResponse) { // Acquire WaitGroup counter wg.Add(1) defer wg.Done() // Release counter when function returns downloadURL := fmt.Sprintf("https://api-content.dropbox.com/1/files/dropbox/%s?access_token=%s", file.Path, token.AccessToken) resp, err := http.Get(downloadURL) if err != nil { panic(err) } defer resp.Body.Close() filename := filepath.Base(file.Path) outFile, err := os.Create(filename) if err != nil { panic(err) } defer outFile.Close() io.Copy(outFile, resp.Body) } func main() { // ... (existing Dropbox authorization and file list code) // Spawn goroutines for file downloads for _, file := range flr.FileList { go downloadFile(file, tr) if count >= 2 { break } } // Wait for all goroutines to complete before exiting wg.Wait() }</code>
Kod yang diubah suai ini menggunakan penyegerakan.WaitGroup untuk memastikan goroutine utama tidak terkeluar sehingga semua fail muat turun selesai. Ini membolehkan goroutine memuat turun fail secara selari, meningkatkan prestasi.
Atas ialah kandungan terperinci ## Bolehkah Goroutines Mempercepatkan Muat Turun Fail di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!