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方法调用