Exemplo n.º 1
0
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;
    }
  }
}
Exemplo n.º 2
0
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));
  }
}
Exemplo n.º 3
0
void enqueueInternal(std::unique_ptr<WorkItem> gt) {
  GenCount time = getTime();
  {
    GenCountGuard g;
    gt->m_gen = correctTime(time);
    s_tq.emplace_back(std::move(gt));
  }
}
Exemplo n.º 4
0
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));
  }
}
Exemplo n.º 5
0
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];
    }
  }
}