Lock-free stack and queue support for benchmark#22
Lock-free stack and queue support for benchmark#22Altickium wants to merge 16 commits intoITMO-PTDC-Team:masterfrom
Conversation
| #if defined(USE_STACK_OPERATIONS) || defined(USE_QUEUE_OPERATIONS) | ||
|
|
||
| template<typename K> | ||
| K* execute_push(const K& key); |
There was a problem hiding this comment.
создай отдельный класс thread_loop_stack/queue.h, и перенеси туда реализации соответствующих экзекьютеров. От него же потом будут наследоваться другие тредлупы для стека и очередей
| + indented_title_with_data("PUSH_RATIO", PUSH_RATIO, indents) | ||
| + indented_title_with_data("POP_RATIO", POP_RATIO, indents); | ||
| #else | ||
| ; |
There was a problem hiding this comment.
лучше бы вынести этот ; наружу, или вообще вынести в отдельную переменную, где будет выбираться между INS/REM и PUSH/POP, а здесь прибавлять это переменную.
А в целом мы решили разделить это в разные классы статистики, потому и этот макрос исчезнет
|
|
||
| namespace microbench::workload { | ||
|
|
||
| #define THREAD_MEASURED_PRE \ |
There was a problem hiding this comment.
этот дефайн можно вынести куда-то в общий код, чтобы не дублировать
There was a problem hiding this comment.
да и наверное вынести в целом класс ThreadLoop, где будут объявлены основные методы. Дальше будут абстрактные наследники для каждой структуры, где будут объявлены и определены экзекьютеры, от которых будут уже реализовываться соответствующие тредлупы
There was a problem hiding this comment.
посмотрел ниже, ты так и сделал, но как раз туда можно и вынести этот дефайн
| double REM_RATIO; | ||
| double RQ_RATIO; | ||
|
|
||
| #if defined(USE_STACK_OPERATIONS) || defined(USE_QUEUE_OPERATIONS) |
There was a problem hiding this comment.
сделать этот класс для каждой ДС свой
What it says in the title
Added support for stack- and queue-like structures and their corresponding operations.
Implemented Treiber Stack and Michael-Scott Queue
Implemented support for thread loops and statistics
Refactored code to remove unnecessary compilation (other funcs)
Added Treiber Stack
Added Michael-Scott Queue
Performed testing