examples: improve the pendulum simulation, with several modes and diagrams (#13446)

This commit is contained in:
Ulises Jeremias Cornejo Fandos 2022-02-12 14:38:07 -03:00 committed by GitHub
parent a74d28ae5f
commit 4391ae563d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 1501 additions and 366 deletions

View file

@ -0,0 +1,37 @@
module main
import benchmark
import sim
import sim.anim
import sim.args as simargs
fn main() {
args := simargs.parse_args(extra_workers: 1) ? as simargs.ParallelArgs
mut app := anim.new_app(args)
mut workers := []thread{cap: args.workers}
mut bmark := benchmark.start()
defer {
app.request_chan.close()
sim.log('Waiting for workers to finish')
workers.wait()
app.result_chan.close()
sim.log('Workers finished!')
bmark.measure(@FN)
sim.log('Done!')
}
for id in 0 .. args.workers {
workers << go sim.sim_worker(id, app.request_chan, [app.result_chan])
}
handle_request := fn [app] (request &sim.SimRequest) ? {
app.request_chan <- request
}
go app.gg.run()
sim.run(args.params, grid: args.grid, on_request: sim.SimRequestHandler(handle_request))
}