remove: @fence()
This commit is contained in:
parent
aa8ff902d3
commit
85a90dd809
1 changed files with 4 additions and 4 deletions
|
|
@ -5,15 +5,15 @@ const sysgpu = @import("sysgpu/main.zig");
|
||||||
|
|
||||||
pub fn Manager(comptime T: type) type {
|
pub fn Manager(comptime T: type) type {
|
||||||
return struct {
|
return struct {
|
||||||
count: u32 = 1,
|
count: std.atomic.Value(u32) = std.atomic.Value(u32).init(1),
|
||||||
|
|
||||||
pub fn reference(manager: *@This()) void {
|
pub fn reference(manager: *@This()) void {
|
||||||
_ = @atomicRmw(u32, &manager.count, .Add, 1, .monotonic);
|
_ = manager.count.fetchAdd(1, .monotonic);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn release(manager: *@This()) void {
|
pub fn release(manager: *@This()) void {
|
||||||
if (@atomicRmw(u32, &manager.count, .Sub, 1, .release) == 1) {
|
if (manager.count.fetchSub(1, .release) == 1) {
|
||||||
@fence(.acquire);
|
_ = manager.count.load(.acquire);
|
||||||
const parent: *T = @alignCast(@fieldParentPtr("manager", manager));
|
const parent: *T = @alignCast(@fieldParentPtr("manager", manager));
|
||||||
parent.deinit();
|
parent.deinit();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue