Actually what is happen if I am in the middle of changing a qvector,  and then 
copying the vector in an other thread? 

--
Sent from cellphone, sorry for the typos



On January 22, 2016 18:34:46 Matthew Woehlke <mwoehlke.fl...@gmail.com> wrote:

> On 2016-01-22 13:13, Marc Mutz wrote:
>> On Friday 22 January 2016 17:44:40 Thiago Macieira wrote:
>>> On Friday 22 January 2016 11:14:47 Marc Mutz wrote:
>>>> On Friday 22 January 2016 09:57:00 Иван Комиссаров wrote:
>>>>> What
>>>>> i'm missing?
>>>>
>>>> You haven't done the exercise with the int first.
>>>
>>> Here's the exercise with int. This is thread-safe:
>>>
>>> int f()
>>> {
>>>     return 1;
>>> }
>>>
>>>     auto x = f();
>>>     ++x;
>>>
>>> No matter how many threads call f(), all of them will get a value from f,
>>> can assign it to a variable and modify without caring what other threads
>>> do.
>>>
>>> Replace int with QMap or QString and you have the same behaviour.
>> 
>> This part of the discussion was about copying a container. You return a new 
>> instance instead. Returning a new instance does not copy, nor move, due to 
>> NRVO.
>
> The same assertions would hold if Thiago had written:
>
>   int f()
>   {
>     static int result = 1;
>     return result;
>   }
>
> ...or anything else for the body of f().
>
> And in fact, you're again attacking a straw man. The implementation of
> getMap() was not shown; for all you know, it too might have returned a
> new instance every time. (Probably not, but doesn't matter.)
>
> What matters is that the result is returned *by value*. It is thread
> safe because it is not a reference, it is a copy. Qt containers are
> likewise thread safe because they behave (in a thread-safe manner) *as
> if* an actual copy was made (even though the actual copy might not
> happen until some time later, if ever).
>
> -- 
> Matthew
>
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to