-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
39 lines (29 loc) · 651 Bytes
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "Barrier.h"
#include <iostream>
#include <thread>
#include <vector>
#define SIZE 10000
Barrier barrier;
std::vector<std::unique_ptr<std::thread>> threads;
void foo(int id) {
printf("Thread %d entered foo \n", id);
barrier.wait_donor();
printf("Thread %d passed barrier\n", id);
}
void bar() {
for(int i = 0;i<SIZE;i++){
barrier.wait_master();
}
}
int main() {
threads.resize(SIZE);
for (int i = 0; i < SIZE; i++) {
flag.insert(std::make_pair(i, false));
threads[i].reset(new std::thread(foo, i));
}
bar();
for (int i = 0; i < SIZE; i++) {
threads[i]->join();
}
return 0;
}