Add operator[] to batch in thread pipeline

This commit is contained in:
2025-08-26 13:38:02 -04:00
parent 3c3555da7a
commit 1f050c861a
2 changed files with 10 additions and 10 deletions

View File

@@ -67,14 +67,14 @@ int main() {
std::latch finish{1};
{
auto guard = pipeline.push(1, true);
*guard.batch.begin() = &finish;
guard.batch[0] = &finish;
}
finish.wait();
});
{
auto guard = pipeline.push(1, true);
*guard.batch.begin() = &done;
guard.batch[0] = &done;
}
stage0_thread.join();
@@ -137,14 +137,14 @@ int main() {
std::latch finish{1};
{
auto guard = pipeline.push(1, true);
*guard.batch.begin() = &finish;
guard.batch[0] = &finish;
}
finish.wait();
});
{
auto guard = pipeline.push(1, true);
*guard.batch.begin() = &done;
guard.batch[0] = &done;
}
stage0_thread.join();
@@ -214,7 +214,7 @@ int main() {
std::latch finish{1};
{
auto guard = pipeline.push(1, true);
*guard.batch.begin() = &finish;
guard.batch[0] = &finish;
}
finish.wait();
});
@@ -222,8 +222,7 @@ int main() {
// Shutdown
{
auto guard = pipeline.push(1, true);
auto it = guard.batch.begin();
*it = &done;
guard.batch[0] = &done;
}
stage0_thread.join();
stage1_thread.join();

View File

@@ -2,6 +2,7 @@
#include <atomic>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
@@ -161,9 +162,6 @@ struct ThreadPipeline {
return static_cast<difference_type>(index_) -
static_cast<difference_type>(rhs.index_);
}
reference operator[](difference_type n) const {
return (*ring)[(index_ + n) & (ring->size() - 1)];
}
friend Iterator operator+(difference_type n, const Iterator &iter) {
return iter + n;
}
@@ -211,6 +209,9 @@ struct ThreadPipeline {
[[nodiscard]] size_t size() const { return end_ - begin_; }
[[nodiscard]] bool empty() const { return end_ == begin_; }
T &operator[](uint32_t n) {
return (*ring)[(begin_ + n) & (ring->size() - 1)];
}
private:
friend struct ThreadPipeline;