I start with the simple example in readme, but each execution throws a seg fault. It seems that the code in your another repository verlib has some differences. Thus I replace the code in dir flock and parlay with the code in verlib and it works. Is the code in this repository incomplete?
#include <iostream>
#include <vector>
#include <thread>
#include "flock/flock.h"
#include "timer.h"
flck::lock lock;
flck::atomic<int> a = 1;
flck::atomic<int> b = 2;
int main() {
int nthd = 20;
uint64_t nops = 100000;
std::vector<std::thread> workers;
util::Timer<> timer;
timer.start();
for(int tid = 0; tid < nthd; tid++) {
workers.push_back(std::thread([&]() {
for(size_t i = 0; i < nops; i++) {
flck::with_epoch([&]() {
lock.with_lock([&]() {
int tmp = a.load();
a = b.load();
b = tmp;
return true;
});
});
}
}));
}
for(int tid = 0; tid < nthd; tid++) {
workers[tid].join();
}
long drt = timer.duration_us();
std::cout << "-- tpt: " << double(nthd * nops) / drt << std::endl;
return 0;
}

I start with the simple example in readme, but each execution throws a seg fault. It seems that the code in your another repository verlib has some differences. Thus I replace the code in dir flock and parlay with the code in verlib and it works. Is the code in this repository incomplete?