void startRequest() { if (UNLIKELY(s_thisThreadIdx == -1)) { s_thisThreadIdx = s_nextThreadIdx.fetch_add(1); } auto const threadIdx = s_thisThreadIdx; GenCount startTime = getTime(); { GenCountGuard g; refreshStats(); checkOldest(); if (threadIdx >= s_inflightRequests.size()) { s_inflightRequests.resize(threadIdx + 1, {kIdleGenCount, 0}); } else { assert(s_inflightRequests[threadIdx].startTime == kIdleGenCount); } s_inflightRequests[threadIdx].startTime = correctTime(startTime); s_inflightRequests[threadIdx].pthreadId = Process::GetThreadId(); FTRACE(1, "threadIdx {} pthreadId {} start @gen {}\n", threadIdx, s_inflightRequests[threadIdx].pthreadId, s_inflightRequests[threadIdx].startTime); if (s_oldestRequestInFlight.load(std::memory_order_relaxed) == 0) { s_oldestRequestInFlight = s_inflightRequests[threadIdx].startTime; } } }
void WorkItem::enqueue(std::unique_ptr<Treadmill::WorkItem> gt) { GenCount time = getTime(); { GenCountGuard g; gt->m_gen = correctTime(time); s_tq.emplace_back(std::move(gt)); } }
void enqueueInternal(std::unique_ptr<WorkItem> gt) { GenCount time = getTime(); { GenCountGuard g; gt->m_gen = correctTime(time); s_tq.emplace_back(std::move(gt)); } }
void enqueueInternal(std::unique_ptr<WorkItem> gt) { if (PendingTriggers::s_destroyed) { return; } GenCount time = getTime(); { GenCountGuard g; gt->m_gen = correctTime(time); s_tq.emplace_back(std::move(gt)); } }
void startRequest(int threadId) { GenCount startTime = getTime(); { GenCountGuard g; assert(threadId >= s_inflightRequests.size() || s_inflightRequests[threadId] == kIdleGenCount); if (threadId >= s_inflightRequests.size()) { s_inflightRequests.resize(threadId + 1, kIdleGenCount); } s_inflightRequests[threadId] = correctTime(startTime); TRACE(1, "tid %d start @gen %lu\n", threadId, s_inflightRequests[threadId]); if (s_oldestRequestInFlight.load(std::memory_order_relaxed) == 0) { s_oldestRequestInFlight = s_inflightRequests[threadId]; } } }