Tools made in assistance of the Metacall Project
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 

44 Zeilen
881 B

#include "lfhmap.hpp"
#include <string>
#include <iostream>
#include <future>
#include <vector>
template<typename fn>
void repeat(size_t nb, fn v) {
while(nb--) {
v();
}
}
int main() {
constexpr size_t thread_cnt = 16;
size_t v = 0;
auto map = new mct20::lfhmap<size_t, std::string, 80000>();
std::vector<std::future<int>> finals;
repeat(thread_cnt, [&](){
size_t v2 = v;
v++;
finals.push_back(std::async(std::launch::async, [&map, v2](){
for(int a = v2; a < 250000; a+=thread_cnt) {
map->set(a, std::to_string(a));
}
for(int a = v2; a < 250000; a+=thread_cnt) {
if(auto acc = map->get(a); acc) {
const std::string& t = acc.value();
if(t != std::to_string(a))
return 1;
} else
return 1;
}
return 0;
}));
});
for(auto& a : finals) a.wait();
int ret = 0;
for(auto& a : finals) ret += a.get();
return ret;
}