Something needs to happen with shared, and soon.
Michel Fortin
michel.fortin at michelf.ca
Wed Nov 14 12:59:16 PST 2012
On 2012-11-14 14:30:19 +0000, Timon Gehr <timon.gehr at gmx.ch> said:
> On 11/14/2012 01:42 PM, Michel Fortin wrote:
>> On 2012-11-14 10:30:46 +0000, Timon Gehr <timon.gehr at gmx.ch> said:
>>
>>> So do I. A thread-local static variable does not imply global state.
>>> (The execution stack is static.) Eg. in a few cases it is sensible to
>>> use static variables as implicit arguments to avoid having to pass
>>> them around by copying them all over the execution stack.
>>>
>>> private int x = 0;
>>>
>>> int foo(){
>>> int xold = x;
>>> scope(exit) x = xold;
>>> x = new_value;
>>> bar(); // reads x
>>> return baz(); // reads x
>>> }
>>
>> I'd consider that poor style.
>
> I'd consider this a poor statement to make. Universally quantified
> assertions require more rigorous justification.
Indeed. There's not enough context to judge fairly. I can accept the
idea there are situations where it is really inconvenient or impossible
to pass the state as an argument.
That said, I disagree that this is not using global state. It might not
be globally accessible (because x is private), but the state still
exists globally since variable x exists in all threads irrespective of
whether they use foo or not.
> If done in such a way that it makes refactoring error prone, it is to
> be considered poor style.
I guess we agree.
--
Michel Fortin
michel.fortin at michelf.ca
http://michelf.ca/
More information about the Digitalmars-d
mailing list