ac8b25935f
- Add async/await/spawn keywords to lexer - C runtime: pthread wrappers (bux_task_spawn, bux_task_join, bux_task_sleep) - C runtime: mutex/condvar channel implementation (bux_channel_new/send/recv/close/free) - Build command adds -pthread flag for C compilation - Std::Task module: TaskHandle, Task_Spawn, Task_Join, Task_Sleep - Std::Channel module: generic Channel<T> with Send, Recv, Close, Free - Parser: spawn Expr() expression - Sema: ekSpawn returns *void - HIR: hSpawn node lowered from ekSpawn - C backend: emit bux_task_spawn(FuncName, arg) for spawn expressions - Example: examples/concurrency.bux (thread + channel demo) - Example: examples_pkg/concurrency working project
24 lines
443 B
Plaintext
24 lines
443 B
Plaintext
module Std::Task {
|
|
|
|
extern func bux_task_spawn(fn: *void, arg: *void) -> *void;
|
|
extern func bux_task_join(handle: *void);
|
|
extern func bux_task_sleep(ms: int64);
|
|
|
|
struct TaskHandle {
|
|
handle: *void;
|
|
}
|
|
|
|
func Task_Spawn(fn: *void, arg: *void) -> TaskHandle {
|
|
return TaskHandle { handle: bux_task_spawn(fn, arg) };
|
|
}
|
|
|
|
func Task_Join(t: TaskHandle) {
|
|
bux_task_join(t.handle);
|
|
}
|
|
|
|
func Task_Sleep(ms: int64) {
|
|
bux_task_sleep(ms);
|
|
}
|
|
|
|
}
|