mcp: use acquire/release ordering for server running flag

This commit is contained in:
Adrià Arrufat
2026-03-01 21:39:38 +09:00
parent 254984b600
commit 952dfbef36
2 changed files with 3 additions and 3 deletions

View File

@@ -156,7 +156,7 @@ fn initResources(allocator: std.mem.Allocator) ![]const protocol.Resource {
} }
pub fn deinit(self: *Self) void { pub fn deinit(self: *Self) void {
self.is_running.store(false, .seq_cst); self.is_running.store(false, .release);
self.browser.deinit(); self.browser.deinit();
self.allocator.destroy(self.browser); self.allocator.destroy(self.browser);

View File

@@ -13,12 +13,12 @@ pub fn processRequests(server: *Server) !void {
var stdin_buf: [8192]u8 = undefined; var stdin_buf: [8192]u8 = undefined;
var stdin = stdin_file.reader(&stdin_buf); var stdin = stdin_file.reader(&stdin_buf);
server.is_running.store(true, .seq_cst); server.is_running.store(true, .release);
var arena: std.heap.ArenaAllocator = .init(server.allocator); var arena: std.heap.ArenaAllocator = .init(server.allocator);
defer arena.deinit(); defer arena.deinit();
while (server.is_running.load(.seq_cst)) { while (server.is_running.load(.acquire)) {
const msg = stdin.interface.adaptToOldInterface().readUntilDelimiterAlloc(server.allocator, '\n', 1024 * 1024 * 10) catch |err| { const msg = stdin.interface.adaptToOldInterface().readUntilDelimiterAlloc(server.allocator, '\n', 1024 * 1024 * 10) catch |err| {
if (err == error.EndOfStream) break; if (err == error.EndOfStream) break;
return err; return err;