比如:
目的:用协程跑CP复制大文件 大概10~20G文件大小吧, 让他不卡住,默认用CP是卡到复制完毕才响应的,
听说协程可以让他不卡住,继续往下走的。。
import (
"github.com/otiai10/copy"
"fmt"
)
func main() {
go func() {
err := copy.Copy("/home/go.zip", "/home/test/go_end.zip")
if err != nil {
fmt.Println("复制失败:", err)
} else {
fmt.Println("复制成功")
}
}()
fmt.Println("立刻显示这行,然后继续往下走,让CP不卡住后台运行的意思吧")
}
有疑问加站长微信联系(非本文作者)

主程序结束,复制也就结束了。我的思路,要想复制的快就先把大文件分割,然后用多个协程并行复制,然后再合并,这样才能发挥go的威力
这有个并发cp的示例, 你参考下,可以自己实现copy进度条:
https://github.com/relunctance/goutils/tree/master/exe/copyfile
主程序退出了,协程也就结束了,如果像你这个思路写的话,主程序要等协程结束才能退出,或者用无线循环不退出,只有这样才能保证协程copy完文件。
基本没有什么优势,只会导致效率越来越低,因为瓶颈在硬盘IO上。
加个sync.WaitGroup阻塞一下