File tree Expand file tree Collapse file tree
library/cpp/threading/equeue Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ size_t TElasticQueue::ObjectCount() const {
1010}
1111
1212bool TElasticQueue::TryIncCounter () {
13- if (++GuardCount_ > MaxQueueSize_ ) {
13+ if (++GuardCount_ > CurrentMaxQueueSize_ ) {
1414 --GuardCount_;
1515 return false ;
1616 }
@@ -68,6 +68,7 @@ bool TElasticQueue::Add(IObjectInQueue* obj) {
6868
6969void TElasticQueue::Start (size_t threadCount, size_t maxQueueSize) {
7070 MaxQueueSize_ = maxQueueSize;
71+ CurrentMaxQueueSize_ = maxQueueSize;
7172 SlaveQueue_->Start (threadCount, maxQueueSize);
7273}
7374
Original file line number Diff line number Diff line change @@ -17,13 +17,20 @@ class TElasticQueue: public IThreadPool {
1717 void Stop () noexcept override ;
1818
1919 size_t ObjectCount () const ;
20+
21+ void SetCurrentMaxQueueSize (size_t v) {
22+ Y_ENSURE (v <= MaxQueueSize_);
23+ CurrentMaxQueueSize_ = v;
24+ }
2025private:
2126 class TDecrementingWrapper ;
2227
2328 bool TryIncCounter ();
2429private:
2530 THolder<IThreadPool> SlaveQueue_;
31+
2632 size_t MaxQueueSize_ = 0 ;
33+ std::atomic<size_t > CurrentMaxQueueSize_ = 0 ;
2734 std::atomic<size_t > ObjectCount_ = 0 ;
2835 std::atomic<size_t > GuardCount_ = 0 ;
2936};
You can’t perform that action at this time.
0 commit comments