zigar.function.AbortSignal ᴾᴴᴾ - chung-leong/zigar GitHub Wiki
JavaScript | PHP
Struct that acts as an interface to an AbortSignal object.
Usage
const std = @import("std");
const zigar = @import("zigar");
const Promise = zigar.function.Promise(error{Aborted}!void);
pub fn start() !void {
try zigar.thread.use();
}
pub fn stop() void {
zigar.thread.end();
}
pub fn idle(promise: Promise, signal: zigar.function.AbortSignal) !void {
const thread = try std.Thread.spawn(.{}, spin, .{ promise, signal });
thread.detach();
}
pub fn spin(promise: Promise, signal: zigar.function.AbortSignal) void {
while (signal.off()) {}
promise.resolve(error.Aborted);
}
<?php
require __DIR__ . '/vendor/autoload.php';
use Revolt\EventLoop;
ini_set('zigar.event_loop', 'revolt');
EventLoop::defer(function() {
$m = zigar_use(__DIR__ . '/abort-signal-example-1.zig');
try {
$m->start();
$signal = new AbortSignal();
EventLoop::delay(0.2, function() use($signal) {
$signal->abort();
});
$m->idle(signal: $signal);
} catch (Exception $e) {
echo $e->getMessage(), "\n";
} finally {
$m->stop();
}
});
EventLoop::run();
aborted
Struct fields:
ptr:*const volatile i32
Functions: