Lines Matching defs:task
54 auto wakeData = std::make_unique<WakeDataWithCb>(fd, data, cb, ExecuteCtx::Cur()->task);
97 void Poller::ClearCachedEvents(CPUEUTask* task) noexcept
100 auto iter = m_cachedTaskEvents.find(task);
146 int Poller::FetchCachedEventAndDoUnmask(CPUEUTask* task, struct epoll_event* eventsVec) noexcept
149 auto syncTaskIter = m_cachedTaskEvents.find(task);
163 auto task = ExecuteCtx::Cur()->task;
164 if (!task) {
172 if (ThreadWaitMode(task)) {
173 std::unique_lock<std::mutex> lck(task->mutex_);
175 int cachedNfds = FetchCachedEventAndDoUnmask(task, eventsVec);
178 FFRT_LOGD("task[%s] id[%d] has [%d] cached events, return directly",
179 task->label.c_str(), task->gid, cachedNfds);
183 if (m_waitTaskMap.find(task) != m_waitTaskMap.end()) {
184 FFRT_LOGE("task has waited before");
188 if (FFRT_UNLIKELY(LegacyMode(task))) {
189 task->blockType = BlockType::BLOCK_THREAD;
192 m_waitTaskMap[task] = {static_cast<void*>(eventsVec), maxevents, &nfds, currTime};
198 reinterpret_cast<SCPUEUTask*>(task)->waitCond_.wait(lck);
199 FFRT_LOGD("task[%s] id[%d] has [%d] events", task->label.c_str(), task->gid, nfds);
203 CoWait([&](CPUEUTask *task)->bool {
205 int cachedNfds = FetchCachedEventAndDoUnmask(task, eventsVec);
208 FFRT_LOGD("task[%s] id[%d] has [%d] cached events, return directly",
209 task->label.c_str(), task->gid, cachedNfds);
214 if (m_waitTaskMap.find(task) != m_waitTaskMap.end()) {
215 FFRT_LOGE("task has waited before");
220 m_waitTaskMap[task] = {static_cast<void*>(eventsVec), maxevents, &nfds, currTime};
226 // The ownership of the task belongs to m_waitTaskMap, and the task cannot be accessed any more.
229 FFRT_LOGD("task[%s] id[%d] has [%d] events", task->label.c_str(), task->gid, nfds);
256 if (data->task != nullptr) {
258 syncTaskEvents[data->task].push_back(ev);
264 void WakeTask(CPUEUTask* task)
266 if (ThreadNotifyMode(task)) {
267 std::unique_lock<std::mutex> lck(task->mutex_);
268 if (BlockThread(task)) {
269 task->blockType = BlockType::BLOCK_COROUTINE;
271 reinterpret_cast<SCPUEUTask*>(task)->waitCond_.notify_one();
273 CoRoutineFactory::CoWakeFunc(task, false);
299 void Poller::CacheEventsAndDoMask(CPUEUTask* task, EventVec& eventVec) noexcept
311 auto& syncTaskEvents = m_cachedTaskEvents[task];
339 uint64_t Poller::GetTaskWaitTime(CPUEUTask* task) noexcept
342 auto iter = m_waitTaskMap.find(task);
437 void Poller::ProcessTimerDataCb(CPUEUTask* task) noexcept
440 auto iter = m_waitTaskMap.find(task);
442 WakeTask(task);
467 } else if (data.task != nullptr) {
468 ProcessTimerDataCb(data.task);
511 TimerDataWithCb timerMapValue(data, cb, ExecuteCtx::Cur()->task, repeat, timeout);