예제 #1
0
void DeterministicSchedule::afterSharedAccess() {
  auto sched = tls_sched;
  if (!sched) {
    return;
  }

  sem_post(sched->sems_[sched->scheduler_(sched->sems_.size())]);
}
예제 #2
0
bool		exec_client(fds c, double tdt)
{
  char		*s;

  s = getcmd(c);
  if (((c && (c->trick) && ((t_client*)c->trick)->close) || !fds_alive(c)) &&
      (c->write || net_close(c)))
    return (true);
  if (!(c->trick) || !(((t_client*)c->trick)->_m))
    return (mod_discovery(c, &s));
  s = flood_check(c, s);
  if (scheduler_(c, tdt))
    return (scheduler_dispatch(c));
  else if (!scheduler_active(c) && callback_(c, s, tdt))
    return (callback_handler(c, s));
  else if (s && !scheduler_active(c) && (find_action(c, s) != -1))
    flood_read(c);
  return (true);
}