[Libwebsockets] Fast loop of LWS_CALLBACK_GET_THREAD_ID events.

Andy Green andy at warmcat.com
Sat Apr 25 03:06:29 CEST 2015



On 25 April 2015 03:13:19 GMT+09:00, Bruce Perens <bruce at perens.com> wrote:
>My server currently catches LWS_CALLBACK_GET_THREAD_ID and returns
>pthread_self(). Currently, it never
>calls libwebsocket_callback_on_writable().

Right but something should be doing so somewhere if it sends anything.

>Using either the released version or a pull from git today, a
>libwebsocket_service() loop with a long delay eats the CPU while a
>socket
>is closing. This is what I am seeing:
>
>Add poll FD, count = 1 fd = 6, events = 1      *Start of serving a few
>files via HTML. Lots of LWS_CALLBACK_GET_THREAD_ID events happening
>here.*
>Add poll FD, count = 2 fd = 7, events = 1
>Add poll FD, count = 3 fd = 8, events = 1
>Add poll FD, count = 4 fd = 9, events = 1
>Delete poll FD, count = 3 fd = 7, events = 0
>Delete poll FD, count = 2 fd = 8, events = 0
>Delete poll FD, count = 1 fd = 9, events = 0
>Add poll FD, count = 2 fd = 8, events = 1       *Start of Websocket
>service.*
>Connection with protocol: radio-server-1 path: /foo
>Change poll FD fd = 8, events = 5                  *Service is in

Sorry why is he closing?  In the interests of reproducing it.

>closing
>state, CPU utilization goes to 100%, continuous
>LWS_CALLBACK_GET_THREAD_ID
>events here.*
>Delete poll FD, count = 1 fd = 8, events = 0    Service is closed, CPU
>utilization goes low again.
>Websocket connection closed.
>
>Am I providing the wrong information to the LWS_CALLBACK_GET_THREAD_ID
>callback?

No the number reported there is opaque to lws.  Lws itself is truly singlethreaded.

I am sitting in Haneda airport at the moment with a couple of hours to kill, I will try to reproduce it.

-Andy

>    Thanks
>
>    Bruce
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Libwebsockets mailing list
>Libwebsockets at ml.libwebsockets.org
>http://ml.libwebsockets.org/mailman/listinfo/libwebsockets




More information about the Libwebsockets mailing list