diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-05-05 12:08:20 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-05-05 12:08:20 +0000 |
commit | 18f9a9bed9a763f4d902bdc859cc1b2731679d58 (patch) | |
tree | 0ee9bd8702b9e604d8e5a5102a5d001f3baf4ec4 /cpp/src/IceGrid/ReapThread.cpp | |
parent | More changes wrt string conversion (diff) | |
download | ice-18f9a9bed9a763f4d902bdc859cc1b2731679d58.tar.bz2 ice-18f9a9bed9a763f4d902bdc859cc1b2731679d58.tar.xz ice-18f9a9bed9a763f4d902bdc859cc1b2731679d58.zip |
Removed session based locator, refactored allocation code.
Diffstat (limited to 'cpp/src/IceGrid/ReapThread.cpp')
-rw-r--r-- | cpp/src/IceGrid/ReapThread.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/cpp/src/IceGrid/ReapThread.cpp b/cpp/src/IceGrid/ReapThread.cpp index 7a312c8dbe6..4278dba3b99 100644 --- a/cpp/src/IceGrid/ReapThread.cpp +++ b/cpp/src/IceGrid/ReapThread.cpp @@ -27,13 +27,13 @@ ReapThread::run() { { Lock sync(*this); + timedWait(_timeout); + if(_terminated) { break; } - timedWait(_timeout); - list<ReapablePtr>::iterator p = _sessions.begin(); while(p != _sessions.end()) { @@ -73,16 +73,15 @@ ReapThread::run() void ReapThread::terminate() { + list<ReapablePtr> reap; { Lock sync(*this); _terminated = true; notify(); + reap.swap(_sessions); } - // - // _sessions is immutable once the reap thread is terminated. - // - for(list<ReapablePtr>::const_iterator p = _sessions.begin(); p != _sessions.end(); ++p) + for(list<ReapablePtr>::const_iterator p = reap.begin(); p != reap.end(); ++p) { try { @@ -93,7 +92,6 @@ ReapThread::terminate() // Ignore. } } - _sessions.clear(); } void |