当前位置: 首页 > news >正文

做好网站建设通知交互设计考研太难了

做好网站建设通知,交互设计考研太难了,新做的网站怎样推广,网络设置怎么设置sync.WaitGroup 是 Go 语言标准库中的一个并发原语#xff0c;用于等待一组并发操作的完成。它提供了一种简单的方式来跟踪一组 goroutine 的执行状态#xff0c;并在所有 goroutine 完成后恢复执行。 下面是关于 sync.WaitGroup 的实现细节的详细解释#xff1a; 创建 Wa…sync.WaitGroup 是 Go 语言标准库中的一个并发原语用于等待一组并发操作的完成。它提供了一种简单的方式来跟踪一组 goroutine 的执行状态并在所有 goroutine 完成后恢复执行。 下面是关于 sync.WaitGroup 的实现细节的详细解释 创建 WaitGroup 可以通过创建 sync.WaitGroup 类型的变量来创建 WaitGroup var wg sync.WaitGroup添加任务 使用 Add 方法将要等待的任务数量加一。每个任务都应该在启动之前调用 Add以确保 WaitGroup 知道要等待的任务数量。 wg.Add(1) // 添加一个任务完成任务 在每个任务完成时应调用 Done 方法来通知 WaitGroup 该任务已完成。 wg.Done() // 完成一个任务等待任务完成 使用 Wait 方法来阻塞当前 goroutine直到所有的任务都完成。 wg.Wait() // 等待所有任务完成如果在调用 Wait 之前已经调用了 Add那么 Wait 将会阻塞并等待所有任务完成。一旦所有任务完成Wait 将返回允许当前 goroutine 继续执行。 注意Wait 方法可以在任何地方调用但是需要确保在所有添加任务的地方都已经调用了 Add 方法以避免出现死锁。 需要注意的是WaitGroup 是通过内部计数器来实现的。每次调用 Add 方法增加计数器的值每次调用 Done 方法减少计数器的值。当计数器的值为零时等待的任务被认为已经完成。 下面是一个简单的示例演示如何使用 WaitGroup package mainimport (fmtsynctime )func main() {var wg sync.WaitGroupwg.Add(2) // 添加两个任务go func() {defer wg.Done() // 标记任务完成time.Sleep(1 * time.Second)fmt.Println(Task 1 completed)}()go func() {defer wg.Done() // 标记任务完成time.Sleep(2 * time.Second)fmt.Println(Task 2 completed)}()wg.Wait() // 等待所有任务完成fmt.Println(All tasks completed) }在上面的示例中我们创建了一个 WaitGroup并添加了两个任务。每个任务使用匿名函数表示其中包含了任务的具体逻辑。在每个任务的最后我们使用 defer wg.Done() 来标记任务的完成。最后我们调用 wg.Wait() 来等待所有的任务完成并在所有任务完成后打印 “All tasks completed”。 通过使用 WaitGroup我们可以轻松地跟踪一组并发操作的完成状态以便在需要时等待它们完成。这对于需要等待多个 goroutine 完成的并发任务非常有用,它包含一个计数器和两个方法Add和Done。 Add方法用于增加计数器的值表示有多少个goroutine需要等待。Done方法用于减少计数器的值表示一个goroutine已经完成了它的工作。当计数器的值变为0时Wait方法将返回表示所有的goroutine都已经完成了它们的工作。 type WaitGroup struct {counter int32wait chan struct{}lock sync.Mutex }func (wg *WaitGroup) Add(delta int) {wg.lock.Lock()defer wg.lock.Unlock()wg.counter int32(delta) }func (wg *WaitGroup) Done() {wg.Add(-1) }func (wg *WaitGroup) Wait() {wg.lock.Lock()if wg.counter 0 {wg.lock.Unlock()return}wg.wait make(chan struct{})wg.lock.Unlock()-wg.wait }func (wg *WaitGroup) DoneAndWait() {wg.Done()wg.Wait() }在这个实现中WaitGroup包含一个计数器和一个等待通道。Add方法使用互斥锁来保护计数器的并发访问。Done方法简单地调用Add方法并将delta设置为-1。Wait方法首先使用互斥锁来检查计数器的值是否为0。如果计数器的值为0则立即返回。否则它创建一个新的等待通道并将其存储在WaitGroup中。最后它释放互斥锁并等待等待通道上的信号。
http://www.hkea.cn/news/14378496/

相关文章:

  • 购买一个网站需要多少钱中国建筑装饰
  • 建网站需要用到什么软件大连华南网站制作公司
  • 建设银行网站如何查询开户行高端网站制作要多少钱
  • 代做道具网站东莞网站建设基础型
  • 上海高端网站建设定制企业公司网站模板下载
  • 网站备案规定虚拟主机网站淘客网站建设
  • 福州做企业网站的公司一个网站域名多少钱
  • 两学一做教育考试网站宝安中心做网站多少钱
  • 在那个网站找模具做上国外网站 dns
  • 现在流行的网站开发语言营销型投资公司
  • 北湖区网站建设简易的网站建设
  • 机械厂做的网站模板叫什么家里电脑可以做网站空间吗
  • 建设网站公司兴田德润win7下用iis搭建网站
  • 公司网络推广网站wordpress图片上加文字
  • 企业网站模块介绍长春火车站进站需要核酸检测吗
  • 网站规划的原则是什么东莞自己建网站哪家强
  • 深圳手机网站建设报价wordpress侧边栏标题字数
  • 网站建设摊销年限最新规定手机怎么注册自己的网站
  • 在线教育网站模板打不开网站怎么办
  • 用php做网站河南seo网站策划
  • 网站备案怎么弄昆明餐饮网站建设
  • 哪个网站做浏览器主页好建设法规 课程网站
  • 销售网站建设深圳住房建设部网站
  • 重庆做网站推广的公司联通公网ip申请 做网站
  • 南庄九江网站建设dw做网站时怎么在图片上加字
  • 一个人可以备案几个网站免费下载ppt的网站
  • 建网站需要哪些资质网站那个做的比较好
  • 东阳网站建设yw81莆田 做网站的公司
  • 五屏网站建设多少钱申请开网店的详细步骤
  • 机构编制网站建设前几年做那些网站致富