libmicrohttpd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libmicrohttpd] ContentReaderCallback has changed behaviour in lates


From: Christian Grothoff
Subject: Re: [libmicrohttpd] ContentReaderCallback has changed behaviour in latest releases
Date: Fri, 01 Feb 2013 11:55:26 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.10) Gecko/20121027 Icedove/10.0.10

On 02/01/2013 11:32 AM, David J Myers wrote:
My server must stream to a number of concurrent clients. Does that not
therefore mean that I need a multi-threaded mode, not the single-threaded
external-select mode?
External-select can handle up to 1k concurrent clients.
If I use the thread-per_connection mode, what is the consequence of
returning zero from the callback instead of blocking? Does it create a new
thread for the next callback?
No, MHD will just call the callback instantly again.
If I use the thread-pool mode, I can't return zero from the callback, but
what would be the consequence of blocking in this mode? This is my preferred
mode.
In thread-pool mode, blocking would cause all other connections that are processed by the same thread to stall. So that's the worst kind of behavior as the other connections might have data ready. Thus, the thread pool mode must only be used if the callbacks are "virtually non-blocking" (by "virtually", I mean to say that I'd not necessarily count disk IO operations in this). Note that *all* modes can support concurrent clients; the only fundamental limitation (with respect to performance) of the select/poll modes is that they only use a single core.


Happy hacking!

Christian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]