Skip to content
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

实时流应用场景,crash的疑问 #401

Open
LiuAriel opened this issue Oct 13, 2023 · 4 comments
Open

实时流应用场景,crash的疑问 #401

LiuAriel opened this issue Oct 13, 2023 · 4 comments

Comments

@LiuAriel
Copy link

LiuAriel commented Oct 13, 2023

1、nodelay设置:ikcp_nodelay(kcp_handle, 0, 10, 0, 1);
ikcp_setmtu(kcp_handle, 1400);

2、snd_wnd, rcv_wnd设置:ikcp_wndsize(kcp_handle, 1024, 1024);
3、ikcp_update 频率 10ms,也使用过5ms
4、 ikcp_waitsnd 的值最大值没超过180
5、 ikcp_flush发送后会调用,不管调用与否都会crash

6、发送数据每间隔5ms发送1200字节数据
7、两端以上的参数都是如此设置

提前是,没加kcp直接用udp发送程序无异常。
出现的问题:主要是发送几秒钟数据,然后crash在发送数据端 ikcp_update或者ikcp_send,或者系统直接busy,进程退出。

主要是问下,需要怎么修改参数配置或者引起的原因,目前也在边研究边调试。

@skywind3000
Copy link
Owner

是不是多线程操作 kcp 对象?

@LiuAriel
Copy link
Author

LiuAriel commented Oct 13, 2023

是不是多线程操作 kcp 对象?

下班回来地路上也是怀疑到这个,请问一下,kcp_send,kcp_recv,kcp_update各自一个线程中,是不是只需要把send、recv用互斥锁即可,update不用?三个共用同一个对象kcp_handle

libuv这样,由于系统flash限制,没办法用了

@skywind3000
Copy link
Owner

skywind3000 commented Oct 13, 2023

怎么可能,正确的用法是全部在一个线程里操作 kcp 对象。
退一万步,你非得多线程,那么所有接口都要加锁。

@LiuAriel
Copy link
Author

怎么可能,正确的用法是全部在一个线程里操作 kcp 对象。 退一万步,你非得多线程,那么所有接口都要加锁。

好的,感谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants