美文网首页
Go 语言里对同步的支持

Go 语言里对同步的支持

作者: Jaycee88 | 来源:发表于2020-06-27 16:40 被阅读0次

    Go语言里对同步的支持主要有五类应用场景:

    1. 资源独占:当多个线程依赖同一份资源(比如数据),需要同时读/写同一个内存地址时,runtime需要保证只有一个修改这份数据,并且保证该修改对其他线程可见。锁和变量的原子操作为此而设计
    2. 生产者-消费者:在生产者-消费者模型中,消费者依赖生产者产出数据。 channel(管道) 为此而设计
    3. 懒加载:一个资源,当且仅当第一次执行一个操作时,该操作执行过程中其他的同类操作都会被阻塞,直到该操作完成。sync.Once为此而设计
    4. fork-join:一个任务首先创建出N个子任务,N个子任务全部执行完成以后,主任务搜集结果,执行后续操作。sync.WaitGroup 为此而设计
    5. 条件变量:条件变量是一个同步原语,可以同时阻塞多个线程,直到另一个线程 1) 修改了条件; 2)通知一个(或所有)等待的线程。sync.Cond 为此而设计

    参考链接

    相关文章

      网友评论

          本文标题:Go 语言里对同步的支持

          本文链接:https://www.haomeiwen.com/subject/gmkvfktx.html