In my big mayflower project, I've got thread safe script checked to prevent when I receive scripts from being triggered before completion
That has worked well over the years
But now I want to call some new scripts, but I want those ones to not be re-entrant safe.
Any ideas on how to proceed?
Couldn't you just use LAUNCH on them?
Wait, but launch only runs scripts while blocks under the launch blocks are running too
One sec I gotta test this out
Um it doesnt work for me.
(thread safe scripts, i mean)
It might but I'm just going to construct a simple example and see where it leads
So with default settings and as expected, tasks never complete
Enable Thread safe scripts and both tasks now run to completion before being triggered again
If I replace 2nd broadcast with a launch instead then I get this
which I think shows that task2 is being run several times in parallel (as it has task completion at 5,7,9 secs)
What I want task2 to do is what it did under the 1st condition of thread safe scripts being unticked
Background info as to why I'm after this
The wait 2 sec is simulating an incoming MQTT message event and I normally want anything triggered by that event to run to completion and ignore any other messages until that has happened. Which is why I enable Thread safe scripts
But now I want to be able to deal with a different event2, and not have that script run to completion unless the time between two successive event2 exceed the running time of the 2nd script
FYI I realise that I could stop all other scripts in sprite before launching each time but that approach only works if I only wanted to do this once
It wouldn't work if I wanted to launch another similar script in the same sprite
"Thread safe", run till completion, block reentry - with a variable "pending" as a semaphore
"Late to the party", abandon the pending, run the fresh one - if you can live with the clone as a semaphore & thread metaphore
Of course custom "launch" blocks can be created.
I wanted to keep existing code the same and still use the Thread safe flag
But using a clone sprite - I think this is a workable solution as long as I don't try and trigger it every 1ms
So this works the same as before
And when I adjust task2 repeat time to 6 secs it runs to completion
I've applied the when I start as a clone in my Mayflower project and it seems to be working lovely
Thanks for getting my brain working on it to find a solution
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.