说我有这两个功能:
int* bigBuffer = new int[1024];
std::atomic<int> pos1 = 0;
volatile int pos2 = 0;
void push1(int value) {
int offset = pos1.fetch_add(1, std::memory_order_acq_rel);
bigBuffer[offset] = value;
}
void push2(int value) {
int offset = pos2++;
bigBuffer[offset] = value;
}
然后我有一个多编写器场景,其中许多线程调用push1或push2来存储他们的数据。数据的顺序并不重要,我主要担心的是速度。
从我的有限测试中,push2更快,数据似乎正确。我会在路上遇到问题吗?