zoukankan      html  css  js  c++  java
  • 多协成利用互斥锁按顺序执行读取文件

    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('
    ')
                    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读取数据文件
    读取完成

    Process finished with exit code 0

  • 相关阅读:
    04_远程管理常用命令
    03_文件和目录常用命令
    02_Linux 终端命令格式
    01_常用 Linux 命令的基本使用
    test
    centOS 7 更改root密码
    安装 centos7
    1
    IO模型
    使用git连接到Github
  • 原文地址:https://www.cnblogs.com/sunlong88/p/11240973.html
Copyright © 2011-2022 走看看