stop all removes threads from future execution

Stop all does not **stop** all threads. It stops the active thread and
removes all other threads from executing in the future.
This commit is contained in:
Michael "Z" Goddard committed 2019-04-11 14:42:10 -04:00
1 parent a996864cd9
commit 39b18fedde
2 files changed
+13 -4

No files matched your search

+6 -2
View File
@@ -1853,8 +1853,12 @@ class Runtime extends EventEmitter {
}
}
this.targets = newTargets;
// Dispose all threads.
this.threads.forEach(thread => this._stopThread(thread));
// Dispose of the active thread.
if (this.sequencer.activeThread !== null) {
this._stopThread(this.sequencer.activeThread);
}
// Remove all remaining threads from executing in the next tick.
this.threads = [];
}
/**
+7 -2
View File
@@ -51,6 +51,8 @@ class Sequencer {
* @type {!Runtime}
*/
this.runtime = runtime;
this.activeThread = null;
}
/**
@@ -97,8 +99,9 @@ class Sequencer {
numActiveThreads = 0;
let stoppedThread = false;
// Attempt to run each thread one time.
for (let i = 0; i < this.runtime.threads.length; i++) {
const activeThread = this.runtime.threads[i];
const threads = this.runtime.threads;
for (let i = 0; i < threads.length; i++) {
const activeThread = this.activeThread = threads[i];
// Check if the thread is done so it is not executed.
if (activeThread.stack.length === 0 ||
activeThread.status === Thread.STATUS_DONE) {
@@ -165,6 +168,8 @@ class Sequencer {
}
}
this.activeThread = null;
return doneThreads;
}