> On Apr 29, 2019, at 7:18 AM, Richard Hipp <d...@sqlite.org> wrote:
> 
> On 4/29/19, Jose Isaias Cabrera <jic...@outlook.com> wrote:
>> 
>> I know I can probably use cygwin to run this tool, but plain Windows is not
>> an option, right?
>> 
> 
> Althttpd is built around fork().  Windows does not support fork().
> The cygwin implementation of fork() is convoluted, and I suspect slow,
> though I have not actually confirmed that.

Yes, it’s a known issue:

   https://www.cygwin.com/faq.html#faq.api.fork

So far as I know, none of the past attempts to get around that weakness have 
succeeded.

WSL uses an entirely new mechanism to solve this problem.  See this video, 
beginning at 9:25:

   https://blogs.msdn.microsoft.com/wsl/2016/05/23/pico-process-overview/

That should make it faster than Cygwin, though I’m not aware of any benchmarks 
specifically testing fork() performance between the two.

My understanding is that Cygwin cannot take advantage of the WSL fork() 
facility due to the walls Windows puts up at the kernel level between so-called 
“subsystems”.  A process is either Win32 or WSL; it cannot be both at the same 
time.  Cygwin is, by its nature, tied to the Win32 subsystem.

A third alternative would be running Linux in a VM.  As long as the process 
isn’t disk-bound, that could be faster than either Cygwin or WSL for fork() 
heavy processes.  If you’ve ever run an Autoconf configure script under Cygwin 
vs. a VM, that’s why the VM is so much faster: shell scripts do almost 
everything via fork().

A middle ground is Docker for Windows.  I hesitate to speculate on its speed 
compared to the other three, but I think there’s reason to hope it could be a 
good option.
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to