Libwebsocket lws_service 阻塞 - housekeeper-software/tech GitHub Wiki
问题描述
在单线程的场景中,我们一般使用libwebsockets poll模式,定时调用lws_service,并设置一个很小的超时时间来实现libwebsockets的调度。
在3.2版本之后,lws_service默认会忽略timeout值,导致线程阻塞在这个方法中。
非常规的解决方案
lws_service(lws_context_, -1);
可以让libwebsockets不再堵塞,效果不错。
作者说这个方面属于 hack 行为,本来用来测试的,没想到很受欢迎。但作者依然建议不要这么做,原因是libwebsockets的调度程序已经很完美了。
更好的做法
使用外部消息循环,比如libevent,彻底抛弃lws_service方法调用