-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconcurrent_method.h
More file actions
33 lines (27 loc) · 993 Bytes
/
Copy pathconcurrent_method.h
File metadata and controls
33 lines (27 loc) · 993 Bytes
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
#ifndef CONCURRENT_METHOD_H
#define CONCURRENT_METHOD_H
#include "abstract_method.h"
#include <iostream>
#include <random>
#include <tuple>
#include <vector>
#include <thread>
#include <chrono>
#include <mutex>
using namespace std;
class ConcurrentMethod : public AbstractMethod {
public:
mutex *mutexes;
vector<vector<tuple<uint64_t, uint64_t>>> concurrent_buffers; // one buffer per partition
using AbstractMethod::AbstractMethod;
void init_mutexes();
void init_buffers();
void work(int thread_index, const vector<tuple<uint64_t, uint64_t>>& data, int start_index, int bucket_size);
double thread_work(const vector<tuple<uint64_t, uint64_t>>& data);
double thread_work_affinity(const vector<tuple<uint64_t, uint64_t>>& data);
void add_tuple_to_buffer(int partition_key, tuple<uint64_t, uint64_t> tuple_to_add);
void print_buffers_everything();
void print_buffers_partition_entries();
void print_buffers_partition_statistics();
};
#endif