Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Knjagskij
-4 / 6 / 0
Регистрация: 10.11.2008
Сообщений: 775
Завершенные тесты: 1
#1

Копирование объекта в поток - C++

16.06.2016, 11:40. Просмотров 162. Ответов 12
Метки нет (Все метки)

"Переданный объект-функция копируется в память, принадлежащую только что созданному потоку выполнения, и оттуда вызывается. Поэтому необходимо, чтобы с точки зрения поведения копия была эквивалентна оригиналу, иначе можно получить неожиданный результат." Энтони Уильямс. Параллельное программирование на С++ в действии. стр 44

А в каком случае копия может не быть эквивалентна оригиналу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 11:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Копирование объекта в поток (C++):

Перемещение объекта в отдельный поток - C++
Добрый день. В общем задался вопросом, как переместить какой-то объект/указатель на объект в отдельный поток? Пока сталкивался только с...

Копирование объекта в вектор - C++
Пишу граф. движок, но проблема скорее всего не с opengl. Возникла проблема с анимированной текстурой, вернее с её копией. Оригинал работает...

Копирование из временного объекта - C++
1) Собственно, как работает такой конструктор? Хотелось бы какой-нибудь пример. 2) Сильно ли различаются по скорости new/notthrow...

Какая функция объекта cin позволяет вставить символ в поток ввода? - C++
Какая функция обьекта cin позволяет вставить символ в поток ввода?Пример,если можно.

Копирование объекта из бинарного файла - C++
Привет всем. Вот код мэйн: int _tmain(int argc, _TCHAR* argv) { Matrix obj1; Matrix obj2; obj1.setMatrix(); ...

Зачем нужен конструктор объекта ostringstream (строковый поток который) с двумя аргументами? - C++
От него всё равно толку как от быка молока. А вроде как предназначен для записи чего-то там в строку... #include <string> #include...

12
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
16.06.2016, 11:49 #2
А то, что функция копируется, тебя не смущает? Впервые о таком слышу.
0
Knjagskij
-4 / 6 / 0
Регистрация: 10.11.2008
Сообщений: 775
Завершенные тесты: 1
16.06.2016, 11:51  [ТС] #3
Объект с переопределенным оператором operator()(params)

Добавлено через 50 секунд
Наверное временные объекты и указатели можно под эту цитату подвести, но может можно еще какие-нибудь примеры привести
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
16.06.2016, 11:51 #4
И что? Программам вроде как запретили манипулировать собственным кодом.
0
Knjagskij
-4 / 6 / 0
Регистрация: 10.11.2008
Сообщений: 775
Завершенные тесты: 1
16.06.2016, 11:52  [ТС] #5
Цитата Сообщение от nmcf Посмотреть сообщение
И что? Программам вроде как запретили манипулировать собственным кодом.
Что значит запретили манипулировать собственным кодом и когда?
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
16.06.2016, 12:01 #6
Когда придумали многозадачность и стали бороться с вирусами.
Функция в памяти хранится в одном экземпляре, если её вызывают параллельно, то будет свой стек для каждого потока.
О копировании тела функции слышу впервые.
0
Knjagskij
-4 / 6 / 0
Регистрация: 10.11.2008
Сообщений: 775
Завершенные тесты: 1
16.06.2016, 13:33  [ТС] #7
А если убрать слово "функция" и оставить только "объект", то как можно трактовать это высказывание?
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
16.06.2016, 13:35 #8
Ну что у потока своя копия.
0
Knjagskij
-4 / 6 / 0
Регистрация: 10.11.2008
Сообщений: 775
Завершенные тесты: 1
16.06.2016, 13:37  [ТС] #9
А как копия может не соответствовать оригиналу? Только если мы криво оператор копирования переопределили? Или здесь о другом речь?
0
avgoor
967 / 601 / 130
Регистрация: 05.12.2015
Сообщений: 1,686
16.06.2016, 13:39 #10
Цитата Сообщение от nmcf Посмотреть сообщение
Программам вроде как запретили манипулировать собственным кодом.
Не запретили. Просто по умолчанию для страниц с кодом нет прав на запись. Если бы совсем запретили - вся защита от копирования отвалилась бы. Кроме того, что можно при компиляции назначить секции права на запись, можно еще ловить PAGEFAULT, итд.
Но к вопросу ТС это не имеет отношения. Там, скорее всего, имеются в виду функциональные объекты / адаптеры и об их копировании речь и идет.
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
16.06.2016, 13:40 #11
Цитата Сообщение от avgoor Посмотреть сообщение
Просто по умолчанию для страниц с кодом нет прав на запись. Если бы совсем запретили - вся защита от копирования отвалилась бы.
И как оно включается?
0
avgoor
967 / 601 / 130
Регистрация: 05.12.2015
Сообщений: 1,686
16.06.2016, 13:54 #12
Цитата Сообщение от nmcf Посмотреть сообщение
И как оно включается?
В VS - /SECTION:.text,W
1
Knjagskij
-4 / 6 / 0
Регистрация: 10.11.2008
Сообщений: 775
Завершенные тесты: 1
16.06.2016, 14:02  [ТС] #13
Цитата Сообщение от avgoor Посмотреть сообщение
Там, скорее всего, имеются в виду функциональные объекты / адаптеры и об их копировании речь и идет.
Да, объекты с перегруженным оператором operator()()
0
16.06.2016, 14:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 14:02
Привет! Вот еще темы с ответами:

Как лучше запретить копирование объекта? - C++
Есть класс, надо запретить копирование его экземпляров. Можно как то сделать, чтоб в интерфейсе класса вообще не было конструктора копии и...

Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса - C++
Здравствуйте! Можно ли использовать перегруженный оператор ввода/вывода в поток из базового класса для объекта производного класса, если...

Избыточное копирование объекта при реализации оператора умножения и оператора присваивания - C++
Есть класс работы с матрицами. Есть операция умножения матриц, описанная как оператор класса. В данном коротком примере я просто моделирую...

Скопировать поток и добавить ошибки в поток - C++
Здорова господа! Есть задачка: "Скопируйте поток объектов типа Name_and_address и вставьте в него столько ошибок, сколько сколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru