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/linkgraphschedule.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/linkgraph/linkgraphschedule.cpp') diff --git a/src/linkgraph/linkgraphschedule.cpp b/src/linkgraph/linkgraphschedule.cpp index 87ab4818a..ce28ec3d8 100644 --- a/src/linkgraph/linkgraphschedule.cpp +++ b/src/linkgraph/linkgraphschedule.cpp @@ -86,6 +86,7 @@ void LinkGraphSchedule::JoinNext() /* static */ void LinkGraphSchedule::Run(LinkGraphJob *job) { for (uint i = 0; i < lengthof(instance.handlers); ++i) { + if (job->IsJobAborted()) return; instance.handlers[i]->Run(*job); } @@ -119,7 +120,7 @@ void LinkGraphSchedule::SpawnAll() /* static */ void LinkGraphSchedule::Clear() { for (JobList::iterator i(instance.running.begin()); i != instance.running.end(); ++i) { - (*i)->JoinThread(); + (*i)->AbortJob(); } instance.running.clear(); instance.schedule.clear(); -- cgit v1.2.3-54-g00ecf