about summary refs log tree commit diff
path: root/src/libutil/util.hh
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-29T13·08+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-29T14·37+0200
commitab3ce1cc13153b2053302cdb710cb411b0b9d84e (patch)
tree1548ea7b5316f7793cdb44d0da2642dafa1d4441 /src/libutil/util.hh
parent4f34c403980e7f5ae3d5257b742af6fd6452c6cf (diff)
Improve SIGINT handling in multi-threaded programs
The flag remembering whether an Interrupted exception was thrown is
now thread-local. Thus, all threads will (eventually) throw
Interrupted. Previously, one thread would throw Interrupted, and then
the other threads wouldn't see that they were supposed to quit.
Diffstat (limited to 'src/libutil/util.hh')
-rw-r--r--src/libutil/util.hh2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index 0a72cc5922..20bd62a0e7 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -316,6 +316,8 @@ void restoreSIGPIPE();
 
 extern volatile sig_atomic_t _isInterrupted;
 
+extern thread_local bool interruptThrown;
+
 void _interrupted();
 
 void inline checkInterrupt()