Install
$ agentstack add skill-krastanov-juliallmagentskills-julia-threads ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Julia Threads
Use Julia Base.Threads tools to parallelize CPU work while preserving thread safety.
Start Julia with the Right Thread Configuration
Use CLI flags or env vars before launch:
julia --threads 4
export JULIA_NUM_THREADS=4
Check runtime layout:
Threads.nthreads(:default)
Threads.nthreads(:interactive)
Threads.threadid()
Use threadpools for responsiveness and interactive tasks.
Pick the Execution Primitive
- Use
Threads.@threadsfor parallel loops over iteration spaces. - Use
Threads.@spawnfor task-based parallel decomposition. - Use
@spawn :interactive ...for latency-sensitive tasks.
For reduction-style work, avoid shared mutable accumulators; split work into independent chunks and combine results after fetch.
Enforce Data-Race Freedom
Treat race freedom as a hard requirement:
- Protect shared mutable state with
ReentrantLock,@lock, orlock(... do ...). - Prefer
Base.Lockableto bind lock + protected object. - Use
Threads.Atomic/atomic_*for primitive shared counters and similar patterns. - Use per-field atomics (
@atomic,@atomicswap,@atomicreplace,@atomiconce) when field-level ordering is required.
Handle Migration and Runtime Caveats
- Do not assume
threadid()stays constant inside a task. - Avoid per-thread buffers indexed by
threadid()unless migration constraints are handled. - Expect
@spawnscheduling order to be nondeterministic. - Insert
GC.safepoint()in long compute-bound loops if needed to prevent GC starvation. - Avoid parallel top-level
include/evalof types/modules/methods.
Reference
references/threading-patterns.md- thread setup, safety, and synchronization patterns
Related Skills
julia-async- task/channel concurrency and event schedulingjulia-tests- validating threaded behavior in tests
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Krastanov
- Source: Krastanov/JuliaLLMAgentSkills
- License: Unlicense
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.