ludic/ns-sync.html
2026-09-17 22:10:03 +00:00

22 lines
No EOL
4.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sync — Ludic</title>
<meta name="description" content="The advanced, opt-in tier — here be dragons.">
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="docs.css">
</head>
<body>
<header class="nav"><div class="wrap nav-in"><a class="brand" href="index.html"><span class="logo">L</span> Ludic</a><button class="nav-toggle" aria-label="Toggle menu" aria-expanded="false">☰</button><nav class="nav-links"><a href="index.html">Home</a><a href="api.html">API Reference</a><a class="nav-cta" href="https://git.workshopsoft.io/workshopsoft/ludic">Source ↗</a></nav></div></header>
<main class="wrap item">
<div class="crumbs"><a href="api.html">API Reference</a> <span>›</span> <span class="here">Sync</span></div>
<div class="item-head"><span class="kind-badge kind-namespace">namespace</span><h1 id="top">Sync</h1></div>
<p class="ns-blurb">The advanced, opt-in tier — <strong>here be dragons</strong>. Raw building blocks for engine-level systems that pass data around: a <code>mutex</code> (cooperative lock), an <code>atomic</code> counter (<code>get</code> / <code>set</code> / <code>add</code> / <code>cas</code>) and a bounded <code>channel</code> (<code>send</code> / <code>recv</code> / <code>can_recv</code> / <code>len</code>). On today's single-threaded deterministic runtime these are cooperative — correct, ordered, replayable and impossible to deadlock — and exist so message-passing code reads the same now as it will when a preemptive OS-thread backend lands behind this same API. Beginners never need this; reach for <code>Job.*</code> / <code>Promise.*</code> instead. Spliced in only when a program mentions <code>Sync.*</code>.</p>
<div class="ns-methods"><a class="ns-method" href="sync-mutex.html"><code class="nm-sig">Sync.mutex() -&gt; int</code><span class="nm-tip">Create a cooperative lock.</span></a><a class="ns-method" href="sync-lock.html"><code class="nm-sig">Sync.lock(mutex) -&gt; void</code><span class="nm-tip">Take the lock.</span></a><a class="ns-method" href="sync-unlock.html"><code class="nm-sig">Sync.unlock(mutex) -&gt; void</code><span class="nm-tip">Release the lock.</span></a><a class="ns-method" href="sync-try_lock.html"><code class="nm-sig">Sync.try_lock(mutex) -&gt; bool</code><span class="nm-tip">Take the lock only if it is free.</span></a><a class="ns-method" href="sync-atomic.html"><code class="nm-sig">Sync.atomic() -&gt; int</code><span class="nm-tip">Create an atomic counter (starts at 0).</span></a><a class="ns-method" href="sync-get.html"><code class="nm-sig">Sync.get(atomic) -&gt; int</code><span class="nm-tip">Read the counter.</span></a><a class="ns-method" href="sync-set.html"><code class="nm-sig">Sync.set(atomic, value) -&gt; void</code><span class="nm-tip">Store a value in the counter.</span></a><a class="ns-method" href="sync-add.html"><code class="nm-sig">Sync.add(atomic, delta) -&gt; int</code><span class="nm-tip">Add to the counter; return the new value.</span></a><a class="ns-method" href="sync-cas.html"><code class="nm-sig">Sync.cas(atomic, expect, next) -&gt; bool</code><span class="nm-tip">Compare-and-set the counter.</span></a><a class="ns-method" href="sync-channel.html"><code class="nm-sig">Sync.channel() -&gt; int</code><span class="nm-tip">Create a bounded int FIFO channel.</span></a><a class="ns-method" href="sync-send.html"><code class="nm-sig">Sync.send(channel, value) -&gt; bool</code><span class="nm-tip">Enqueue a value (false if full).</span></a><a class="ns-method" href="sync-recv.html"><code class="nm-sig">Sync.recv(channel) -&gt; int</code><span class="nm-tip">Dequeue the oldest value.</span></a><a class="ns-method" href="sync-can_recv.html"><code class="nm-sig">Sync.can_recv(channel) -&gt; bool</code><span class="nm-tip">Is there a value waiting?</span></a><a class="ns-method" href="sync-len.html"><code class="nm-sig">Sync.len(channel) -&gt; int</code><span class="nm-tip">How many values are queued.</span></a><a class="ns-method" href="sync-cpu_count.html"><code class="nm-sig">Sync.cpu_count() -&gt; int</code><span class="nm-tip">The machine's logical cores (1 to 64); Job.parallel_for uses one thread per core.</span></a></div>
<a class="back" href="api.html">← All symbols</a>
</main>
<script src="ludic-highlight.js"></script>
<script>Ludic.installCards(); Ludic.flashTarget();</script>
</body></html>