Add operator[] to batch in thread pipeline
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user