我有 2 个类,一个将多个 96 位对象写入缓冲区(一次 32 位 - 3x int32),一个我想从同一个缓冲区读取。
第一个类(Writer)保留和存储内存区域并创建指向第一个 32 位区域的指针。
如何安全地写入缓冲区(暂时忽略缓冲区溢出)...我需要写入 32 位块,那么如何在每次 96 位写入之间更改“写入指针”的位置?我是否做类似的事情:
for(int count = 0; count < 100; ++count) // for 100 96bit objects { for(int32 i = 0; i < 3; ++i) { *buffer = *(myInt32 + i); } // ** how do I move the buffer ptr to the start of the next 96bit memory space? ** }
我保留内存是否安全,写入一些 96 位对象,然后将指向它开头的指针传递给第二个(Reader)类,以确保它们都能够访问相同的对象?(Reader 会一次性读取多个 96 位对象(~10,000),所以我只需要知道读取数据的开始。)
阅读器读取缓冲区后,如何“重置”指针(清空缓冲区)以便再次写入缓冲区?
缓冲区:
缓冲区实际上是一个指针,指向由 . 保留的内存区域的开头posix_memalign
。
int32 *tempbufferPtr;
posix_memalign ((void**)&tempbufferPtr, 8, 10000 ); // space for 10,000 objects
writePtr = (my96bitObjectclass*)tempbufferPtr;