Lines Matching refs:worker
98 for (auto& worker : workers_) { in ~TaskManager() local
99 delete worker; in ~TaskManager()
145 for (auto& worker : workers_) { in GetThreadInfos() local
146 if (worker->workerEnv_ == nullptr) { in GetThreadInfos()
149 napi_value tid = NapiHelper::CreateUint32(env, static_cast<uint32_t>(worker->tid_)); in GetThreadInfos()
150 … napi_value priority = NapiHelper::CreateUint32(env, static_cast<uint32_t>(worker->priority_)); in GetThreadInfos()
156 std::lock_guard<std::mutex> lock(worker->currentTaskIdMutex_); in GetThreadInfos()
157 for (auto& currentId : worker->currentTaskId_) { in GetThreadInfos()
246 auto worker = *iter; in CheckForBlockedWorkers() local
249 if ((worker->state_ == WorkerState::IDLE) || (worker->IsExecutingLongTask()) || in CheckForBlockedWorkers()
250 (ConcurrentHelper::GetMilliseconds() - worker->startTime_ < threshold) || in CheckForBlockedWorkers()
251 !worker->UpdateWorkerState(WorkerState::RUNNING, WorkerState::BLOCKED)) { in CheckForBlockedWorkers()
258 auto workerEngine = reinterpret_cast<NativeEngine*>(worker->workerEnv_); in CheckForBlockedWorkers()
259 if (worker->idleState_ && !workerEngine->IsExecutingPendingJob()) { in CheckForBlockedWorkers()
261 worker->UpdateWorkerState(WorkerState::BLOCKED, WorkerState::IDLE); in CheckForBlockedWorkers()
263 worker->UpdateWorkerState(WorkerState::BLOCKED, WorkerState::RUNNING); in CheckForBlockedWorkers()
264 worker->startTime_ = ConcurrentHelper::GetMilliseconds(); in CheckForBlockedWorkers()
271 if (worker->HasLongTask()) { in CheckForBlockedWorkers()
275 idleWorkers_.erase(worker); in CheckForBlockedWorkers()
276 timeoutWorkers_.insert(worker); in CheckForBlockedWorkers()
329 for (auto& worker : idleWorkers_) { in GetIdleWorkers() local
331 if (worker->ffrtTaskHandle_ != nullptr) { in GetIdleWorkers()
332 if (worker->GetWaitTime() > 0) { in GetIdleWorkers()
338 tids.emplace(worker->tid_); in GetIdleWorkers()
361 for (auto& worker : idleWorkers_) { in GetIdleWorkersList() local
363 if (worker->ffrtTaskHandle_ != nullptr) { in GetIdleWorkersList()
364 uint64_t workerWaitTime = worker->GetWaitTime(); in GetIdleWorkersList()
365 bool isWorkerLoopActive = worker->IsLoopActive(); in GetIdleWorkersList()
372 freeList_.emplace_back(worker); in GetIdleWorkersList()
374 freeList_.emplace_back(worker); in GetIdleWorkersList()
382 if (!ReadThreadInfo(worker->tid_, buf, sizeof(buf))) { in GetIdleWorkersList()
389 HILOG_ERROR("taskpool: sscanf_s of state failed for %{public}d", worker->tid_); in GetIdleWorkersList()
392 if (state != 'S' || utime != worker->lastCpuTime_) { in GetIdleWorkersList()
393 worker->idleCount_ = 0; in GetIdleWorkersList()
394 worker->lastCpuTime_ = utime; in GetIdleWorkersList()
397 if (++worker->idleCount_ >= IDLE_THRESHOLD) { in GetIdleWorkersList()
398 freeList_.emplace_back(worker); in GetIdleWorkersList()
409 auto worker = freeList_[i]; in TriggerShrink() local
410 if (worker->state_ != WorkerState::IDLE || worker->HasLongTask()) { in TriggerShrink()
413 auto idleTime = ConcurrentHelper::GetMilliseconds() - worker->idlePoint_; in TriggerShrink()
414 if (idleTime < MAX_IDLE_TIME || worker->runningCount_ != 0) { in TriggerShrink()
417 idleWorkers_.erase(worker); in TriggerShrink()
418 HILOG_DEBUG("taskpool:: try to release idle thread: %{public}d", worker->tid_); in TriggerShrink()
419 uv_async_send(worker->clearWorkerSignal_); in TriggerShrink()
437 auto iter = std::find_if(idleWorkers_.begin(), idleWorkers_.end(), [](Worker *worker) { in TriggerShrink() argument
438 auto idleTime = ConcurrentHelper::GetMilliseconds() - worker->idlePoint_; in TriggerShrink()
439 return idleTime > MAX_IDLE_TIME && worker->runningCount_ == 0 && !worker->HasLongTask(); in TriggerShrink()
443 auto worker = *iter; in TriggerShrink() local
444 idleWorkers_.erase(worker); in TriggerShrink()
445 HILOG_DEBUG("taskpool:: try to release idle thread: %{public}d", worker->tid_); in TriggerShrink()
446 uv_async_send(worker->clearWorkerSignal_); in TriggerShrink()
482 auto worker = *(idleWorkers_.begin()); in NotifyShrink() local
483 if (worker == nullptr || worker->clearWorkerSignal_ == nullptr) { in NotifyShrink()
486 if (worker->HasLongTask()) { // worker that has longTask should not be released in NotifyShrink()
489 if (worker->hasExecuted_) { // worker that hasn't execute any tasks should not be released in NotifyShrink()
670 void TaskManager::NotifyWorkerIdle(Worker* worker) in NotifyWorkerIdle() argument
674 if (worker->state_ == WorkerState::BLOCKED) { in NotifyWorkerIdle()
677 idleWorkers_.insert(worker); in NotifyWorkerIdle()
685 void TaskManager::NotifyWorkerCreated(Worker* worker) in NotifyWorkerCreated() argument
687 NotifyWorkerIdle(worker); in NotifyWorkerCreated()
690 void TaskManager::NotifyWorkerAdded(Worker* worker) in NotifyWorkerAdded() argument
693 workers_.insert(worker); in NotifyWorkerAdded()
697 void TaskManager::NotifyWorkerRunning(Worker* worker) in NotifyWorkerRunning() argument
700 idleWorkers_.erase(worker); in NotifyWorkerRunning()
707 return std::count_if(workers_.begin(), workers_.end(), [](const auto& worker) { in GetRunningWorkers() argument
708 return worker->runningCount_ != 0; in GetRunningWorkers()
812 for (auto& worker : workers_) { in IsChooseIdle() local
813 if (worker->state_ == WorkerState::IDLE) { in IsChooseIdle()
844 for (auto& worker : idleWorkers_) { in NotifyExecuteTask() local
845 worker->NotifyExecuteTask(); in NotifyExecuteTask()
889 auto worker = Worker::WorkerConstructor(env); in CreateWorkers() local
890 NotifyWorkerAdded(worker); in CreateWorkers()
895 void TaskManager::RemoveWorker(Worker* worker) in RemoveWorker() argument
898 idleWorkers_.erase(worker); in RemoveWorker()
899 timeoutWorkers_.erase(worker); in RemoveWorker()
900 workers_.erase(worker); in RemoveWorker()
903 void TaskManager::RestoreWorker(Worker* worker) in RestoreWorker() argument
910 if (worker->state_ == WorkerState::BLOCKED) { in RestoreWorker()
912 timeoutWorkers_.insert(worker); in RestoreWorker()
918 idleWorkers_.emplace_hint(idleWorkers_.end(), worker); in RestoreWorker()
981 callbackInfo->worker = nullptr; in ResetCallbackInfoWorker()
995 Worker* worker = static_cast<Worker*>(task->worker_); in NotifyCallbackExecute() local
996 worker->Enqueue(task->env_, resultInfo); in NotifyCallbackExecute()
999 callbackInfo->worker = worker; in NotifyCallbackExecute()
1008 … TaskManager::GetInstance().PostTask(onCallbackTask, "TaskPoolOnCallbackTask", worker->priority_); in NotifyCallbackExecute()
1024 if (info == nullptr || info->worker == nullptr) { in GetMessageQueue()
1028 auto worker = info->worker; in GetMessageQueue() local
1030 worker->Dequeue(info->hostEnv, queue); in GetMessageQueue()
1037 if (callbackInfo == nullptr || callbackInfo->worker == nullptr) { in GetMessageQueueFromCallbackInfo()
1041 auto worker = callbackInfo->worker; in GetMessageQueueFromCallbackInfo() local
1043 worker->Dequeue(callbackInfo->hostEnv, queue); in GetMessageQueueFromCallbackInfo()
1304 void TaskManager::StoreLongTaskInfo(uint64_t taskId, Worker* worker) in StoreLongTaskInfo() argument
1307 longTasksMap_.emplace(taskId, worker); in StoreLongTaskInfo()
1326 auto worker = GetLongTaskInfo(taskId); in TerminateTask() local
1327 if (UNLIKELY(worker == nullptr)) { in TerminateTask()
1330 worker->TerminateTask(taskId); in TerminateTask()