当前位置: 首页 > 网络应用技术

[GO并发] - 同步程序包和同步原始(1)

时间:2023-03-06 18:53:23 网络应用技术

  大家好,我是北?

  本科生正在学习,这是每日tin剂。

  如果有问题,请给我更多建议,并欢迎大家与我讨论鸭子???

  今天是我们“ Go Parallel”系列的第三篇文章:“同步软件包和同步原始(1)”;

  我们去取得它!

  var count = 0

  var wg sync.waitgroup

  //打开十个共素

  对于I:= 0;我<10;i ++ {

  wg.add(1)

  go func(){{

  defer wg.done()

  // 10,000个堆栈

  对于J:= 0;J <10000;J ++ {

  计数++

  }

  }()

  }

  WG.Wait()

  fmt.println(count)

  }

  印刷:100000

  rwmutex也称为读写互斥锁。方法|功能||--- |--- |锁()|申请写锁||解锁()|申请发布写作锁||rlock()|申请阅读锁||runlock()|释放ReadingLock的申请||rlocker()|实现Lock()和Locker()方法的储物柜接口|

  打印:

  可以看出,可以看出2个开始,第一个尚未完成,1和0遵循开始读取一个接一个地读取

  从理论上讲,根本没有可比性。一个用于线程之间的通信,另一个用于线程封锁一段时间。唯一相同的方法是使用方法和方法使线程进入休眠状态。对于中断信号,它们可以做出不同的反应和中断:

  add(num-int)counter+num done()counter-1 wait()阻止主函数,直到计数器为0 sync.waitgroup。可以维持计数器。当我们要启动z循环任务时,应将计时器总数增加到z,并且我们可以增加骑自行车的添加(),否则可以立即增加到z;每当任务结束时,完成()将在counter.li-1上进行计数器,直到计数器为0,呼叫wait()表示等待任务已完成。

  Sync.Waitground必须通过指针将值传递,否则该过程将进入僵局状态

  在本文中,我们介绍了基本同步在GO语言中的概念和简单应用,原始语言Sync.mutex,Sync.rwmutex,Sync.WaitGroup的基本同步的概念和简单应用以及比较Sync.mutex和mutex and Mutex and Mutex and Mutex和Mutex和sync.rwmutex,time.sleep和sync.WaitGroup。分别读写和写作相互锁可以使对关键区域中共享资源的良好且且且不限制关键区域中共享资源的并发读取。为了提高应用程序的性能。同时,我们不知道完成此应用程序需要多长时间。时间和功能不优雅,因此Sync.WaitGroup更适合任务安排,等待MultiveMultiple goroutine已完成。

  同步袋中有三个常用的锁,我们将在下一篇文章中谈论它。

  原始:https://juejin.cn/post/7102779550815223816