MCPcopy Create free account
hub / github.com/apache/arrow / SetCapacity

Method SetCapacity

cpp/src/arrow/util/thread_pool.cc:566–588  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

564}
565
566Status ThreadPool::SetCapacity(int threads) {
567 std::unique_lock<std::mutex> lock(state_->mutex_);
568 if (state_->please_shutdown_) {
569 return Status::Invalid("operation forbidden during or after shutdown");
570 }
571 if (threads <= 0) {
572 return Status::Invalid("ThreadPool capacity must be > 0");
573 }
574 CollectFinishedWorkersUnlocked();
575
576 state_->desired_capacity_ = threads;
577 // See if we need to increase or decrease the number of running threads
578 const int required = std::min(static_cast<int>(state_->pending_tasks_.size()),
579 threads - static_cast<int>(state_->workers_.size()));
580 if (required > 0) {
581 // Some tasks are pending, spawn the number of needed threads immediately
582 LaunchWorkersUnlocked(required);
583 } else if (required < 0) {
584 // Excess threads are running, wake them so that they stop
585 state_->cv_.notify_all();
586 }
587 return Status::OK();
588}
589
590int ThreadPool::GetCapacity() {
591 std::unique_lock<std::mutex> lock(state_->mutex_);

Callers 6

SetIOThreadPoolCapacityFunction · 0.80
JoinBenchmarkMethod · 0.80
TestCopyFilesMethod · 0.80
MakeMethod · 0.80
SetCpuThreadPoolCapacityFunction · 0.80
TEST_FFunction · 0.80

Calls 3

InvalidFunction · 0.50
OKFunction · 0.50
sizeMethod · 0.45

Tested by 2

TestCopyFilesMethod · 0.64
TEST_FFunction · 0.64