Re-creating vs storing event instances clarification

Looking at the simple_event.cpp , the explosion does a create instance() then start() and release() while the UI cancel instance only start().

So for things like gunshots, footsteps, a new instance should be created, started and released every time?
In the event_parameter.cpp , are not re-created, so I’m confused as to when/what use cases should I store vs re-create events, and what is most preferable for performance.

I’d also like to know what is usually done.
In my case, our dev chose to have a pool of instances: each time he needs one, he polls the instances to find one in the stopped state, to use it. I don’t know if it’s the usual way to deal with instances.

By calling start and release on an Event, you are guaranteeing that the entire event will play out and it will only end naturally. Using release will also invalidate any handle you had to the instance so you cannot modify or stop in manually. If you do not release the instance, then anything you do with the handle you have stored will effect that individual instance. Eg. if the instance is already playing, calling play on it again will cause the instance to restart.