From 94d629d79bcd623a5c77daa3db742cd8fd43d7b4 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 24 Dec 2020 23:36:36 +0000 Subject: Change: [Linkgraph] Allow job threads to be aborted early when clearing schedule (#8416) When link graph jobs are cleared due to abandoning the game or exiting, flag the job as aborted. The link graph job running in a separate thread checks the aborted flag periodically and terminates processing early if set. This reduces the delay at game abandon or exit if a long-running job would otherwise still be running. --- src/linkgraph/linkgraphjob.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/linkgraph/linkgraphjob.cpp') diff --git a/src/linkgraph/linkgraphjob.cpp b/src/linkgraph/linkgraphjob.cpp index c66ddeac7..e23c23b47 100644 --- a/src/linkgraph/linkgraphjob.cpp +++ b/src/linkgraph/linkgraphjob.cpp @@ -38,7 +38,8 @@ LinkGraphJob::LinkGraphJob(const LinkGraph &orig) : link_graph(orig), settings(_settings_game.linkgraph), join_date(_date + _settings_game.linkgraph.recalc_time), - job_completed(false) + job_completed(false), + job_aborted(false) { } @@ -92,6 +93,11 @@ LinkGraphJob::~LinkGraphJob() * Accessing other pools may be invalid. */ if (CleaningPool()) return; + /* If the job has been aborted, the job state is invalid. + * This should never be reached, as once the job has been marked as aborted + * the only valid job operation is to clear the LinkGraphJob pool. */ + assert(!this->IsJobAborted()); + /* Link graph has been merged into another one. */ if (!LinkGraph::IsValidID(this->link_graph.index)) return; -- cgit v1.2.3-54-g00ecf