[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