我正在测试我使用libuv开发的简单服务器架构。 每当服务器从客户端接收到某些内容时,它就会通过' \ r'并向所有观察者广播每条消息。
然后,我用来测试的观察者用相同的原始消息(echo服务器)调用server-> write()方法。
问题是,每次运行程序时,它都会随机运行或不运行。
如果它不起作用,则错误消息为:
Assertion failed: (req->write_index < req->nbufs), function uv__write, file src/unix/stream.c, line 869.
Abort trap: 6
完整代码在此处:https://github.com/ghostec/film
大部分代码都在此文件中:https://github.com/ghostec/film/blob/master/server/server.cpp
编辑:显然这与在uv_queue_work中调用uv_write这一事实有关。因为它们都写入同一个处理程序,如果在libuv循环中调用它们时出现故障,就会发生一些不好的事情。但是,我不确定我的评估是否正确。