Benchmark
 All Classes Files Functions Variables Typedefs Macros
Macros | Functions
thread.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include "benchmark.h"

Macros

#define N   1000
 

Functions

void * thread (void *param)
 
int main (int argc, char *argv[])
 

Macro Definition Documentation

#define N   1000

Function Documentation

int main ( int  argc,
char *  argv[] 
)
15  {
16  pthread_t threads[N];
17  int err = 0, i;
18 
19  timer *t = timer_alloc();
20  recorder *create_rec = recorder_alloc("create.csv");
21  recorder *join_rec = recorder_alloc("join.csv");
22 
23  // BEGIN
24  start_timer(t);
25  for (i = 0; i < N; i++) {
26  err = pthread_create(&threads[i], NULL, &thread, NULL);
27  /*if (err != 0)
28  error(1, err, "pthread_create");*/
29  }
30  write_record_n(create_rec, i, stop_timer(t), N);
31  // END
32 
33  sleep(2); // Pour s'assurer que les pthread_join ne patientent pas
34 
35  // BEGIN
36  start_timer(t);
37  for (i = 0; i < N; i++) {
38  err = pthread_join(threads[i], NULL);
39  /*if (err != 0)
40  error(1, err, "pthread_join");*/
41  }
42  write_record_n(join_rec, i, stop_timer(t), N);
43  // END
44 
45  recorder_free(join_rec);
46  recorder_free(create_rec);
47  timer_free(t);
48 
49  return EXIT_SUCCESS;
50 }
void timer_free(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:172
void * thread(void *param)
Definition: thread.c:10
recorder écrit les temps dans un fichier .csv
Definition: benchmark.c:208
void write_record_n(recorder *rec, long int x, long int time, long n)
Comme write_record mais divise time par n après avoir retiré l'overhead
Definition: benchmark.c:253
timer permet de mesurer le temps écoulé entre deux moments
Definition: benchmark.c:43
timer * t
Definition: memfork.c:25
int i
Definition: mutsem.c:43
void start_timer(timer *t)
Stoque le temps actuel comme début de la mesure dans t
Definition: benchmark.c:87
recorder * recorder_alloc(char *filename)
Alloue un recorder
Definition: benchmark.c:219
void recorder_free(recorder *rec)
Libère toutes les resources utilisées par rec
Definition: benchmark.c:263
timer * timer_alloc()
Alloue un timer
Definition: benchmark.c:63
#define N
Definition: thread.c:8
long int stop_timer(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:133
void* thread ( void *  param)
10  {
11  sleep(1); // pas un `while (true)` comme ça le thread est pas "ready"
12  pthread_exit(NULL);
13 }