[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Avoiding threads in the daemon
From: |
Ludovic Courtès |
Subject: |
Re: Avoiding threads in the daemon |
Date: |
Fri, 19 Dec 2014 22:31:52 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) |
Hi,
Eelco Dolstra <address@hidden> skribis:
> On 18/12/14 17:32, Ludovic Courtès wrote:
>
>> Thus, I think Nix commit 49fe95 (which introduces monitor-fd.hh, which
>> uses std::thread just for convenience) should be reverted, along with
>> the subsequent commits to that file; then commit 524f89 can be reverted.
>
> I really don't want to get rid of threads because they're useful and I want to
> use them more in the future (e.g. build.cc would be much simpler if it used
> threads rather than the current event-driven approach; nix-daemon could handle
> client connections with a thread rather than a process; etc.).
Hmm, I’m not convinced about the whole threads-for-convenience approach
à la Java. (I think the ideal is a single-threaded event loop; of
course we want to avoid IoC, and this is where FRP or monads come in.)
> I see a few ways to get PID namespaces back:
>
> * Do a regular fork followed by clone(... | CLONE_NEWPID | CLONE_PARENT)
> (after
> which the intermediate process can exit).
Hmm.
> * Call setuid/setgid via syscall() to bypass the locking in the Glibc
> wrappers.
> However, there might be other problematic functions so this is not a great
> solution.
Surely.
> * Get the Glibc folks to provide a way to run at-fork handlers with clone().
Hmm.
> Clearly the first option is the easiest.
Yeah.
I think threads are a can of worms anyway and may cause other problems
eventually.
Thanks,
Ludo’.