feat: Phase 8.3 Concurrency — tasks, channels, spawn
- 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
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import Std::Io::{PrintLine, PrintInt};
|
||||
import Std::Task::TaskHandle;
|
||||
import Std::Channel::Channel;
|
||||
|
||||
func Worker(arg: *void) -> *void {
|
||||
PrintLine("Hello from thread!");
|
||||
return null;
|
||||
}
|
||||
|
||||
func Main() -> int {
|
||||
let handle: *void = spawn Worker();
|
||||
Task_Join(TaskHandle { handle: handle });
|
||||
PrintLine("Thread finished");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user