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}

Declarations Used 8