-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libuv未计算chan等待状态导致程序提前结束 #7
Comments
可否上代码看下? |
源代码如下:
上面的代码运行结果为:
修改chan大小为32(超过put_task的数量),运行结果为:
根据结果推断当chan大小小于put_task数量时,有一部分put_task没有正常退出,不知道该问题是不是bug? |
补充一下,这个问题是因为 ”接收任务“ 设置 g_closed = true 先退出了,
方式3比较合理,然而目前代码选的方式2,只要保障chan中的消息有人收就没问题。 |
是的,只要有收的就没有问题,所以不确定是不是bug,就来问一下。 |
更新了,没有其他任务可以唤醒时,s_chan_put返回失败,输出如下
测试代码
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
现象为多个send_task发送消息到recv_task,由于chan空间设置太小,导致部分send_task进入等待态,而recv_task在收到第一个消息时正常退出并设置全局变量控制所有send_task退出。此时,剩余send_task不在全局变量的active_task上且由于没有定时器、没有uv的handles和req,uv正常结束流程,导致剩余等待状态的send_task没有正常退出。
不知道这是个bug还是正常使用不会出现这种情况?
The text was updated successfully, but these errors were encountered: