提交 619fa4d9 编写于 作者: mysterywolf's avatar mysterywolf

[ringbuffer] 采用局部变量,防止出现资源竞争

上级 d57caa7e
...@@ -333,11 +333,15 @@ rt_size_t rt_ringbuffer_data_len(struct rt_ringbuffer *rb) ...@@ -333,11 +333,15 @@ rt_size_t rt_ringbuffer_data_len(struct rt_ringbuffer *rb)
return rb->buffer_size; return rb->buffer_size;
case RT_RINGBUFFER_HALFFULL: case RT_RINGBUFFER_HALFFULL:
default: default:
if (rb->write_index > rb->read_index) {
return rb->write_index - rb->read_index; rt_size_t wi = rb->write_index, ri = rb->read_index;
if (wi > ri)
return wi - ri;
else else
return rb->buffer_size - (rb->read_index - rb->write_index); return rb->buffer_size - (ri - wi);
}; }
}
} }
RTM_EXPORT(rt_ringbuffer_data_len); RTM_EXPORT(rt_ringbuffer_data_len);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册