[dmd-concurrency] shutting down

Sean Kelly sean at invisibleduck.org
Thu Jan 21 09:27:41 PST 2010


Fixin that situation is easy--just close the sockets.

Sent from my iPhone

On Jan 21, 2010, at 9:08 AM, Andrei Alexandrescu <andrei at erdani.com>  
wrote:

> Steve Schveighoffer wrote:
>> You're getting closer to a function that effectively and artificially
>> kills all threads.  I don't really like this scenario, a thread
>> should be able to do whatever it wants, even during shutdown.  For
>> instance, let's say you log that a thread is ending via a finally
>> clause at the end of the thread.  This works no problem with default
>> logging configuration since the log is to disk, but one enterprising
>> user has all his applications log to a network socket, so he
>> configures the logging library of your app to use a network socket to
>> store data.  All of a sudden, the logs go away because doing the log
>> causes an exception.  I think this is unacceptable and hard to plan
>> for.  You can't possibly know all the uses of sockets in underlying
>> functions that a thread may call on shutdown.  I think all those
>> should be allowed to proceed.
>
> I understand your concern, but I also like the following scenario  
> when I'm at the airport:
>
> 1. I start Firefox
>
> 2. There is no wireless available
>
> 3. All my many pages are spinning waiting to load
>
> 4. I close Firefox
>
> It's instant. I want to prevent threads started by arbitrary  
> libraries for various purposes from being able to delay application  
> shutdown indefinitely.
>
>> Not to mention you are relying on the network library providing such
>> a function which might not exist (killing all socket communication is
>> not a standard socket function).  Someone who wants this behavior can
>> implement it manually in environments where it is provided -- I don't
>> think it should be a standard practice.
>
> That function always exists (see my previous post).
>
>> Normal practice is to not block on a socket indefinitely (i.e. wait
>> for data in a loop with a timeout, checking for shutdown every loop),
>> or wait for both socket data *and* another event.  In some OSes, the
>> latter is not possible, and I think Phobos should try to use the
>> least common denominator.
>
> Normal practice is to close the socket library, and it will  
> instantly fail all pending and new calls. That makes both threads  
> and the main program much easier to write.
>
>
> Andrei
> _______________________________________________
> dmd-concurrency mailing list
> dmd-concurrency at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-concurrency


More information about the dmd-concurrency mailing list