diff options
Diffstat (limited to 'src/mongo/util/goodies.h')
-rw-r--r-- | src/mongo/util/goodies.h | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/src/mongo/util/goodies.h b/src/mongo/util/goodies.h index 3dcb74ef9d5..26e62d59396 100644 --- a/src/mongo/util/goodies.h +++ b/src/mongo/util/goodies.h @@ -154,94 +154,6 @@ namespace mongo { typedef void *HANDLE; #endif - class TicketHolder { - public: - TicketHolder( int num ) : _mutex("TicketHolder") { - _outof = num; - _num = num; - } - - bool tryAcquire() { - scoped_lock lk( _mutex ); - return _tryAcquire(); - } - - void waitForTicket() { - scoped_lock lk( _mutex ); - - while( ! _tryAcquire() ) { - _newTicket.wait( lk.boost() ); - } - } - - void release() { - { - scoped_lock lk( _mutex ); - _num++; - } - _newTicket.notify_one(); - } - - void resize( int newSize ) { - { - scoped_lock lk( _mutex ); - - int used = _outof - _num; - if ( used > newSize ) { - cout << "ERROR: can't resize since we're using (" << used << ") more than newSize(" << newSize << ")" << endl; - return; - } - - _outof = newSize; - _num = _outof - used; - } - - // Potentially wasteful, but easier to see is correct - _newTicket.notify_all(); - } - - int available() const { - return _num; - } - - int used() const { - return _outof - _num; - } - - int outof() const { return _outof; } - - private: - - bool _tryAcquire(){ - if ( _num <= 0 ) { - if ( _num < 0 ) { - cerr << "DISASTER! in TicketHolder" << endl; - } - return false; - } - _num--; - return true; - } - - int _outof; - int _num; - mongo::mutex _mutex; - boost::condition_variable_any _newTicket; - }; - - class TicketHolderReleaser { - public: - TicketHolderReleaser( TicketHolder * holder ) { - _holder = holder; - } - - ~TicketHolderReleaser() { - _holder->release(); - } - private: - TicketHolder * _holder; - }; - /** * this is a thread safe string |