Skip to content

Lock-free stack and queue support for benchmark#22

Draft
Altickium wants to merge 16 commits intoITMO-PTDC-Team:masterfrom
Altickium:stack-and-queue-addition
Draft

Lock-free stack and queue support for benchmark#22
Altickium wants to merge 16 commits intoITMO-PTDC-Team:masterfrom
Altickium:stack-and-queue-addition

Conversation

@Altickium
Copy link
Copy Markdown
Contributor

@Altickium Altickium commented Nov 5, 2025

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

@Altickium Altickium marked this pull request as draft November 5, 2025 22:28
#if defined(USE_STACK_OPERATIONS) || defined(USE_QUEUE_OPERATIONS)

template<typename K>
K* execute_push(const K& key);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

создай отдельный класс thread_loop_stack/queue.h, и перенеси туда реализации соответствующих экзекьютеров. От него же потом будут наследоваться другие тредлупы для стека и очередей

@Altickium Altickium requested a review from Mr-Ravil December 4, 2025 10:30
Comment thread cpp/microbench/workloads/thread_loops/queue/queue_thread_loop.h
+ indented_title_with_data("PUSH_RATIO", PUSH_RATIO, indents)
+ indented_title_with_data("POP_RATIO", POP_RATIO, indents);
#else
;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

лучше бы вынести этот ; наружу, или вообще вынести в отдельную переменную, где будет выбираться между INS/REM и PUSH/POP, а здесь прибавлять это переменную.
А в целом мы решили разделить это в разные классы статистики, потому и этот макрос исчезнет

Comment thread cpp/microbench/workloads/thread_loops/default/impls/prefill_insert_thread_loop.h Outdated

namespace microbench::workload {

#define THREAD_MEASURED_PRE \
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

этот дефайн можно вынести куда-то в общий код, чтобы не дублировать

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

да и наверное вынести в целом класс ThreadLoop, где будут объявлены основные методы. Дальше будут абстрактные наследники для каждой структуры, где будут объявлены и определены экзекьютеры, от которых будут уже реализовываться соответствующие тредлупы

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

посмотрел ниже, ты так и сделал, но как раз туда можно и вынести этот дефайн

Comment thread cpp/microbench/workloads/thread_loops/map/map_thread_loop.h
double REM_RATIO;
double RQ_RATIO;

#if defined(USE_STACK_OPERATIONS) || defined(USE_QUEUE_OPERATIONS)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

сделать этот класс для каждой ДС свой

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants