rcv_queue 创建buffer和UncheckRecv拷贝数据时有几率会造成越界
mycks opened this issue · 7 comments
mycks commented
.....
var buffer = CreateBuffer(peekSize);
var recvlength = UncheckRecv(buffer.Memory.Span);
....
seg.data.CopyTo(buffer.Slice(recvLength));
初步确认应该是线程安全问题
KumoKyaku commented
有可以复现的测试用例吗,没有复现这个bug
mycks commented
mycks commented
运行TestServer 再运行TestClient
mycks commented
@KumoKyaku 运行TestServer 再运行TestClient
KumoKyaku commented
测试代码不合法,不能while (true)Send 测试代码中Send里面调用了异步的TryRecv。异步挂起的时候会导致多线程同时TryRecv。支持多线程只得是支持Update Send Recv三个函数可以在多线程调用。但是不可以多线程同时Send或者Recv,这会导致竞赛条件。
mycks commented
- 非常感谢!新开了线程后解决了我的问题