Commit 43bc980a authored by Grégory Mounié's avatar Grégory Mounié

ajout du timer juste pour une incrémentation atomique

parent cf80e8b5
CXXFLAGS= -std=gnu++11 -Wall -Werror -O3
CC= g++
LDLIBS+= -lpthread
CFLAGS+= -Wall -g -O2 -std=gnu11
CFLAGS+= -Wall -g -O3 -std=gnu11
all: dekker peterson dekkerAvecC11
......@@ -14,5 +14,5 @@ dekkerC11.o: CC=gcc
peterson: peterson.o
clean:
rm -f dekker dekker.o peterson peterson.o dekkerC11.o dekkerAvecC11.o
rm -f dekker dekker.o peterson peterson.o dekkerC11.o dekkerAvecC11.o inc.o
......@@ -103,6 +103,9 @@ void incrementeur_dekker(int me, int other) {
}
}
/* Incrémentation directe en C++ */
atomic_int acompteur;
int main(int argc, char **argv) {
cout << u8"** Increm. sans dekker **" << endl;
......@@ -157,5 +160,19 @@ int main(int argc, char **argv) {
cout << compteur << "/" << NBINC * 2 << " en "
<< chrono::duration_cast<chrono::nanoseconds>(e-d).count() << " ns" << endl;
cout << u8"** Increm avec opération atomiques **" << endl;
d = chrono::high_resolution_clock::now();
acompteur = 0;
thread t9 = thread(incrementeur_atomic, 0, 1, &acompteur, 0);
thread t10 = thread(incrementeur_atomic, 1, 0, &acompteur, 0);
t9.join();
t10.join();
e = chrono::high_resolution_clock::now();
cout << compteur << "/" << NBINC * 2 << " en "
<< chrono::duration_cast<chrono::nanoseconds>(e-d).count() << " ns" << endl;
}
......@@ -11,3 +11,9 @@ void incrementeur(int me, int other, int *compteur, int stride) {
}
}
void incrementeur_atomic(int me, int other, atomic_int *compteur, int stride) {
for(int i=0; i < NBINC; i++) {
(*(compteur+i*stride))++;
}
}
......@@ -5,4 +5,9 @@ void incrementeur(int me, int other, int *compteur, int stride);
constexpr int NBINC= 400000;
#include <atomic>
using namespace std;
void incrementeur_atomic(int me, int other, atomic_int *compteur, int stride);
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment