天天看點

多協成利用互斥鎖按順序執行讀取檔案

text文本

1、動态規劃比遞歸快-LeetCode91-解碼方法
2、Linux記憶體描述之記憶體節點node--Linux記憶體管理
3、筆試題—字元串常見的算法題集錦
4、機器學習系列(14)_SVM碎碎念part2:SVM中的向量與空間距離
5、大數運算(7)——大數階乘(求階乘)
6、經典設計模式實戰演練
7、數獨求解算法(回溯法和唯一解法)java實作
8、int和byte之間的轉換
9、matlab讀取資料檔案      
package main
import (
    "os"
    "bufio"
    "io"
    "fmt"
    "sync"
    "time"
)


func main()  {
    var wg sync.WaitGroup
    var locker sync.Mutex
    file,_:=os.OpenFile("./src/gocode/jt/test",os.O_RDONLY,666)
    defer  file.Close()
    fw:=bufio.NewReader(file)

    for i:=1;i<=2;i++{
        go func(index int) {
            defer  wg.Done()
            for{
                locker.Lock()
                str,err:=fw.ReadString('\n')
                if err!=nil{
                    if err==io.EOF{
                        locker.Unlock()
                        break
                    }
                    fmt.Println(err)
                }
                time.Sleep(time.Millisecond*200)
                fmt.Printf("【協程%d】:%s",index,str)
                locker.Unlock()
            }
        }(i)
    }
    wg.Add(2)
    wg.Wait()
    fmt.Println("讀取完成")

}      

執行結果:

【協程2】:1、動态規劃比遞歸快-LeetCode91-解碼方法

【協程2】:2、Linux記憶體描述之記憶體節點node--Linux記憶體管理

【協程1】:3、筆試題—字元串常見的算法題集錦

【協程2】:4、機器學習系列(14)_SVM碎碎念part2:SVM中的向量與空間距離

【協程1】:5、大數運算(7)——大數階乘(求階乘)

【協程2】:6、經典設計模式實戰演練

【協程1】:7、數獨求解算法(回溯法和唯一解法)java實作

【協程2】:8、int和byte之間的轉換

【協程1】:9、matlab讀取資料檔案

讀取完成

繼續閱讀