コード例 #1
0
ファイル: history.c プロジェクト: mztriz/bspwm
void history_add(monitor_t *m, desktop_t *d, node_t *n)
{
    if (!record_history)
        return;
    history_needle = NULL;
    history_t *h = make_history(m, d, n);
    if (history_head == NULL) {
        history_head = history_tail = h;
    } else if ((n != NULL && history_tail->loc.node != n) || (n == NULL && d != history_tail->loc.desktop)) {
        for (history_t *hh = history_tail; hh != NULL; hh = hh->prev)
            if ((n != NULL && hh->loc.node == n) || (n == NULL && d == hh->loc.desktop))
                hh->latest = false;
        history_tail->next = h;
        h->prev = history_tail;
        history_tail = h;
    } else {
        free(h);
    }
}
コード例 #2
0
/* Run a simulation in which:
 * - <meanArrival> clients arrive per hour on average
 * - <meanDeparture> clients leave per hour on average
 * - simulation runs for <duration> minutes
 * And print every relevant information.
 */
void run_simulation(int meanArrival, int meanDeparture, int duration) {
  printf("### %d arrivals/hour, %d departures/hour during %d minutes\n\n", meanArrival, meanDeparture, duration);

  double lambda = (meanArrival / 60.);
  double mu = (meanDeparture / 60.);
  queue_t q = mm1_queue(lambda, mu, duration);

  printf("#### Arrival & Departure times\n\n");

  printf("##### Arrival times\n\n");

  for(int i = 1; i <= q.arrivalsSize; i ++) {
    printf("%d. %f minutes\n", i, q.arrivals[i - 1]);
  }
  printf("\n");

  printf("##### Departure times\n\n");

  for(int i = 1; i <= q.departuresSize; i ++) {
    printf("%d. %f minutes\n", i, q.departures[i - 1]);
  }
  printf("\n");

  printf("#### Queue evolution\n\n");

  history_t h = make_history(&q);

  printf("```\n");
  history_to_csv(&h);
  printf("```\n\n");

  printf("#### Statistics\n\n");

  printf(" - Mean clients number: %f\n", mean_clients_number(&h));
  printf(" - Mean waiting time: %f\n\n", mean_waiting_time(&q));
}