简介
信号量是并发编程中常见的一种同步机制,在需要控制访问资源的线程数量时就会用到信号量
使用场景
在需要控制访问资源的线程数量时就会需要信号量
我来举个例子帮助你理解。假设我们有一组要抓取的页面,资源有限最多允许我们同时执行三个抓取任务,当同时有三个抓取任务在执行时,在执行完一个抓取任务后才能执行下一个排队等待的任务。当然这个问题用Channel也能解决,不过这次我们使用Go提供的信号量原语来解决这个问题,代码如下:
package main
import (
"context"
"fmt"
"sync"
"time"
"golang.org/x/sync/semaphore"
)
func doSomething(u string) {

本文介绍了信号量作为并发编程中的同步机制,主要用于控制访问资源的线程数量。通过一个实例展示了如何利用Go的信号量限制并发任务的数量,并讨论了Acquire和TryAcquire方法的使用。在释放资源时,信号量遵循先进先出的原则唤醒等待者,但大量资源请求可能导致某些goroutine长时间等待。
最低0.47元/天 解锁文章
1537

被折叠的 条评论
为什么被折叠?



