повысить назначение перемещения потока по сравнению с конструктором перемещения - PullRequest
0 голосов
/ 26 мая 2011

Спецификация библиотеки Boost.Thread для состояний конструктора перемещения для

Конструктор перемещения:

Эффекты: передает право собственности на поток, управляемый другим (если есть) недавно построенный boost :: thread экземпляр.

, тогда как для Назначения Движения:

Передача права собственности на поток управляется другим (если есть) *. Если ранее была тема * ассоциируется с этим отсоединен.

Очевидно, что для назначения перемещения явно указывается, что предыдущий объект потока становится отделенным.

Поскольку копирование объекта boost :: thread не определено и возможно только перемещение владельца, означает ли это, что в конструкторе Move предыдущий поток владельца не отсоединяется?

Или это просто недосмотр документации?

Ответы [ 3 ]

6 голосов
/ 26 мая 2011

Вы недоразумение.Пометьте ваши объекты потока A и B и фактический поток T.

Если B владеет T, перемещение конструкции A из B означает, что A теперь принадлежит T, а B ничего не имеет.
Если B владеет T, перемещайтеприсвоение A из B означает, что A теперь владеет T, а B ничего не имеет, , и все, что ранее принадлежало A, не принадлежит ничему (он же отстранен).

4 голосов
/ 26 мая 2011

Это движение - конструктор - каким может быть предыдущий владелец, если объект только появляется?

3 голосов
/ 26 мая 2011

Разница в том, что при построении перемещения новый объект потока раньше не существовал, поэтому у него нет предыдущего потока.

При назначении перемещения вы начинаете с двух потоковых объектов и заканчиваете хотя бы тем, что хотя бы один из них пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...