I am working with a package that is not entirely stable and which can sometimes corrupt Maple's state. I would like to "sandbox" the risky operations, executing each of them in another kernel thread that I can destroy (or somehow reset), getting back just the return result of each operation (each return result involves only global names, numbers, and strings). What would be a good way to achieve this?
I see the Task model, but it is not clear to me that each kernel used is effectively restart()'d for each Task Start(). At the moment I would have a bit more confidence in manually using Thread Create(), except that I do not see any information on how to destroy a thread (just to destroy Mutex and Condition Variable resources.)
This is, I suppose, a kind of security, but it is not covered by EngineSecurity. (Not unless I need to process[popen] to achieve this.)