👨 “Semalot!” 👨🦱 “Semalot!!” 👴 “Semalot!!!” 🤦♀️ “这只是一个计数器而已……” 👨👨🦱👴 “嘘!!!!”
一个用于 Swift 异步任务的初级计数信号量,我在我的代码中经常使用它,所以我认为我应该把它变成一个软件包!
目前用于
详细文档 可以在这里找到
正如其名。它简单高效,不使用任何调度锁,也不会引起任何任务队列拥塞。
let maxConcurrentOperations = Semalot(tickets: 3)
try await withThrowingTaskGroup { group in
for request in lotsOfRequests {
await maxConcurrentOperations.takeTicket()
group.addTask {
let data = try await urlSession.data(for: request).0
await doThings(with: data)
maxConcurrentOperations.returnTicket()
}
}
}
版权所有 (c) 2023 Paul Tsochantaris。 根据 MIT 许可证授权,详情请参阅 LICENSE 文件。