Re: Local variables in C++ and thread safety

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1 August 2013 12:01, Александров Петр wrote:
> Hello.
> Are automatic variables (that are defined in functions, lambdas, blocks) in
> C++11 thread local? Is the following code correct:
>
> auto f1 = [&](const double x) {
>    double y = sin(x);
>    SomeClass1 obj1;
>    double z = obj1.f2(y);
>    return cos(z);
> }
>
> // Some function which creates several threads which call f1.
> calculate_parallel(f1);

"thread local" has a specific meaning and refers to objects declared
thread_local, which have "thread storage duration", which means
storage for the variables lasts as long as the thread is running.

Automatic variables have "automatic storage duration" instead, which
means they are on the stack of the calling thread and their storage
only lasts until exit from the block in which they are created.

If you're asking whether each thread has its own copy of the variable,
yes, of course.





[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux