std.experimental.logger formal review round 3

Kevin Lamonte via Digitalmars-d digitalmars-d at puremagic.com
Thu Oct 2 03:37:01 PDT 2014


On Wednesday, 1 October 2014 at 13:37:43 UTC, Dicebot wrote:
> On Wednesday, 1 October 2014 at 10:50:54 UTC, Kevin Lamonte 
> wrote:
>> 2. We have Tid in the API.  What about Fiber and Thread?  If 
>> we can only pick one, I would vote for Thread rather than Tid, 
>> as Tid's currently have no way to be uniquely identified in a 
>> logging message.  Reference: 
>> https://issues.dlang.org/show_bug.cgi?id=6989
>
> In my opinion only solution that scales is to provide same ID 
> as one used by std.concurrency - it can be thread, fiber, 
> process or pretty much anything. There are many possible 
> threading abstractions and all can't be easily supported, makes 
> sense to stick to one considered standard.

Long-term this sounds very reasonable.  But the problem at the 
moment is that std.concurrency provides nothing that can be used 
to distinguish threads in a log file.  Tid cannot be converted to 
a unique string or vice versa, nor can one Tid.join() to ensure 
that a child Thread has completed before closing the log file(s) 
and exiting main().  For boring end-user applications Threads are 
today's most common denominator.

Would PR 
https://github.com/D-Programming-Language/phobos/pull/1910 
provide a way given a Tid to determine: a) What underlying 
concurrency model it is using (Thread, Fiber, process, future)? 
b) Uniquely identify that structure (Thread ID string, Fiber 
address string, process ID, something else)?  c) Be capable of 
using that identifying immutable (because it needs to be 
send()able to another Tid writing to network/file/etc) 
string-representable thing to find the original Tid again?  A+B 
is necessary for using std.logger to debug concurrent 
applications, C is a very nice-to-have that comes up periodically.


More information about the Digitalmars-d mailing list