1. 首页
  2. 主题
  3. Go问与答

2020年3月23日遇到死锁难题,求指点!

anko · · 1467 次点击
![image.png](https://static.studygolang.com/200323/bfaf2fd4740958d246cd2bf0f9209726.png) ###代码如下: ``` package main import ( "fmt" "os" "sync" ) //读取一个文件的内容到另外一个文件 func main() { var wg = sync.WaitGroup{} var L sync.Mutex var L2 sync.Mutex ch := make(chan byte, 8) wg.Add(2) //写文件 newfile, err := os.OpenFile(`C:\Users\Administrator\Desktop\go_pro\src\io_pro\test12\test\闪电侠.The.Flash.S06E10.中英字幕.HDTVrip.720P-人人影视111.mp4`, os.O_CREATE|os.O_WRONLY, 0666) checkErr(err) defer newfile.Close() go func() { L2.Lock() //与上面不同的锁 ls:=<-ch ls1:=<-ch fmt.Println(ls) fmt.Println(ls1) L2.Unlock() wg.Done() }() file, e := os.Open(`C:\Users\Administrator\Desktop\go_pro\src\io_pro\test12\test\闪电侠.The.Flash.S06E10.中英字幕.HDTVrip.720P-人人影视.mp4`) checkErr(e) defer file.Close() //读取文件 go func() { L.Lock() by111 := make([]byte, 20) file.Read(by111) fmt.Println(by111) ch <- 'a' ch <- 'b' L.Unlock() wg.Done() }() wg.Wait() fmt.Println("主程序退出") } func checkErr(err error) { if err != nil { fmt.Println(err) } } ```
是的,不好意思,我贴错了!只是为了探究!
#3
更多评论
我这里跑了下,没报错
#1
说句实在话,不知道你到底在干吗,//读取一个文件的内容到另外一个文件 你这代码压根就没做到,其次哪里会发生死锁,你贴的图,输出结果跟代码完全不一致,main.go 118行在哪呢?这贴的代码一次性输出,你图里为啥有一堆输出,代码上锁的意义何在?
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中