示例#1
0
long RingBuffer_AdvanceWriteIndex( RingBuffer *rbuf, long numBytes )
{
#ifdef MPSAFE
    /* we need to ensure that previous writes are seen before we update the write index */
    WriteMemoryBarrier();
    return rbuf->writeIndex = (rbuf->writeIndex + numBytes) & rbuf->bigMask;
#else
    return rbuf->writeIndex = (rbuf->writeIndex + numBytes) & rbuf->bigMask;
#endif
}
示例#2
0
long RingBuffer_AdvanceReadIndex( RingBuffer *rbuf, long numBytes )
{
#ifdef MPSAFE
    /* we need to ensure that previous writes are always seen before updating the index. */
    WriteMemoryBarrier();
    return rbuf->readIndex = (rbuf->readIndex + numBytes) & rbuf->bigMask;
#else
    return rbuf->readIndex = (rbuf->readIndex + numBytes) & rbuf->bigMask;
#endif
}
示例#3
0
文件: Debug.cpp 项目: pedia/raidget
LogStream& StdLogStream()
{
	static LogStream *s;
	ReadMemoryBarrier();
	if(!s) {
		static StaticCriticalSection lock;
		lock.Enter();
		if(!s) {
			static byte lb[sizeof(LogStream)];
			LogStream *strm = new(lb) LogStream;
			if(!*__logfilename)
				sOpenVppLog(strm);
			WriteMemoryBarrier();
			s = strm;
		}
		lock.Leave();
	}
	return *s;
}