shithub: mc

ref: 8d7247af269b3b0ef283f3b01f31980f686ae217
dir: /lib/thread/test/spawn.myr/

View raw version
use std
use thread

var done : int32
var capture

const main = {
	var ptr

	capture = 666
	ptr = &capture
	thread.spawn({
		std.assert(capture==666, "wrong captured value\n")
		std.assert(ptr#==666, "wrong captured ptr value\n")
		ptr# = 333
		thread.xadd(&done, 1)
	})

	while done == 0
		/* nothing */
	;;

	std.assert(capture == 333, "capture wasn't written to correctly\n")
	std.usleep(100_000)
}