From 4de6a92c9a0e8f70520b59a873127283efa2a509 Mon Sep 17 00:00:00 2001 From: xiongyuelong <297075978@qq.com> Date: Tue, 9 Jul 2024 10:25:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E5=88=B6=E5=B9=B6=E5=8F=91=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E8=BF=9E=E6=8E=A5=E6=95=B0=E4=B8=BA3,=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E8=B6=85=E5=A4=9A=E5=B1=82=E7=9A=84=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=B9=B6=E5=8F=91=E8=BF=9E=E6=8E=A5=E6=95=B0?= =?UTF-8?q?=E8=BF=87=E5=A4=9A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.go b/install.go index 32a8573..03b6b28 100644 --- a/install.go +++ b/install.go @@ -309,6 +309,8 @@ func (m *Client) download(_registry, d, tag string, digest digest.Digest, authHe var fakeLayerId string var downloadStatus = make(map[int]bool) var notifyChan = make(chan int, 3) + //限制并发下载数为3 + var ch = make(chan struct{}, 3) for n, layer := range layers { namer := sha256.New() namer.Write([]byte(parentid + "\n" + layer.Digest + "\n")) @@ -330,12 +332,14 @@ func (m *Client) download(_registry, d, tag string, digest digest.Digest, authHe copyedHeader[k] = v } go func(fakeLayerId string, layer Layer, n int, notifyChan chan int, layerInfo *LayerInfo, tmpDir string, _registry string, d string, authHeader http.Header) { + ch <- struct{}{} er := m.downloadLayer(fakeLayerId, &layer, layerInfo, tmpDir, _registry, d, authHeader) if er != nil { logrus.Errorf("下载第%d/%d层失败:%s", n+1, len(layers), err) err = er } notifyChan <- n + <-ch }(fakeLayerId, layer, n, notifyChan, &layerInfo, tmpDir, _registry, d, copyedHeader) parentid = fakeLayerId }