nbio/context
Code
main.odin ¶30 linesSource
1package main
2
3import "base:runtime"
4
5import "core:nbio"
6import "core:time"
7
8main :: proc() {
9 nbio.acquire_thread_event_loop()
10 defer nbio.release_thread_event_loop()
11
12 {
13 context.user_index = 2
14
15 // By default, the context you receive in callbacks is the one that `nbio.run`/`tick` receives.
16 nbio.timeout(time.Second, proc(op: ^nbio.Operation) {
17 assert(context.user_index == 1)
18 })
19
20 // If you want to pass through the current context, you could clone it, pass it through user data, and restore it.
21 nbio.timeout_poly(time.Second, new_clone(context), proc(op: ^nbio.Operation, ctx: ^runtime.Context) {
22 context = ctx^
23 free(ctx)
24 assert(context.user_index == 2)
25 })
26 }
27
28 context.user_index = 1
29 nbio.run()
30}