Issue
I am trying to understand how I shall port my Java chess engine to dart.
So I have understood that I should use Isolates and/or Futures to run my engine in parallell with the GUI but how can I force the engine to terminate the search.
In java I just set some boolean that where shared between the engine thread and the gui thread.
Solution
You should send a message to the isolate, telling it to stop. You can simply do something like:
port.send('STOP');
To be clear, isolates and futures are two different things, and you use them differently.
Use an isolate when you want some code to truly run concurrently, in a separate “isolated memory heap”. An isolate is like a mini program, running separately from your main program. You send isolates messages, and you can receive messages from isolates.
Use a future when you want to be notified when a value is available later. “Later” is defined as “a future tick in the event loop”. Each isolate has its own event loop. It’s important to understand that just asking a Future to run a function doesn’t make the function run in parallel. It just puts the function onto the event loop to be run “later”.
Answered By – Seth Ladd
Answer Checked By – Willingham (FlutterFixes Volunteer)