From f32afb70b8b53e69362b01a3806ea7655589e4b5 Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Fri, 4 Jul 2025 11:02:23 +0200 Subject: [PATCH] Add contract to create thread. --- lib/std/threads/thread.c3 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/std/threads/thread.c3 b/lib/std/threads/thread.c3 index 26614bc1d..96fd39bfd 100644 --- a/lib/std/threads/thread.c3 +++ b/lib/std/threads/thread.c3 @@ -68,7 +68,16 @@ macro void? ConditionVariable.wait_timeout(&cond, Mutex* mutex, ulong ms) return NativeConditionVariable.wait_timeout((NativeConditionVariable*)cond, (NativeMutex*)mutex, ms); } -macro void? Thread.create(&thread, ThreadFn thread_fn, void* arg) => NativeThread.create(thread, thread_fn, arg); +<* + Create and start a thread. + + @require thread_fn != null : "A non null thread function is required" +*> +macro void? Thread.create(&thread, ThreadFn thread_fn, void* arg) +{ + return NativeThread.create(thread, thread_fn, arg); +} + macro void? Thread.detach(thread) => NativeThread.detach(thread); macro int? Thread.join(thread) => NativeThread.join(thread); macro bool Thread.equals(thread, Thread other) => NativeThread.equals(thread, other);