Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Есть два потока и глобальный массив, могут ли потоки перепутать элементы глобального массива или другого контейнера?

12.02.2012, 15:11. Показов 1747. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начать с массивов, допустим
То есть ситуация такая: пусть имеется два потока и глобальный массив элементов int из двух элементов, один поток выводит в цикле значение нулевого элемента, а второй- значение первого; вот сижу думаю- могут ли они перепутать элементы?

С одной стороны не могут потому как обращение к элементу по индексу однозначаено идентифицирует этот элемент; а с другой стороны, кто его знает, как на уровне ассемблера это реализовано?

Да, естессно, речь пока не идёт об использовании мьютексов или других средств синхронизации.
(А потом когда разберёмся с массивами можно будет перейти на более сложные контейнеры, словари там множества и прочая)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2012, 15:11
Ответы с готовыми решениями:

[Потоки] Взаимодействие элементов формы из другого потока
Есть такой код, который выполняется в backgroundWorker1: for (int i = 0; i < API._IDRequest.Count; i++) { ...

Потоки, static. Доступ к полю класса из другого потока
Добрый день! Суть: имею программу, в ней есть класс server, который содержит в себе поле session sessions, в определённый момент...

Разделить элементы одного массива на элементы другого массива, записать результат в третий массив
Как разделить элементы одного массива на элементы другого массива? есть массив a и есть массив b. размеры a=b. ввожу новый массив,...

6
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
12.02.2012, 16:07
Два потока используют две разных переменных, могут ли они перепутать элементы?

С одной стороны не могут потому как обращение к переменной однозначаено идентифицирует этот элемент; а с другой стороны, кто его знает, как на уровне ассемблера это реализовано?
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
12.02.2012, 19:15
могут, если третий поток поменяет значения этих элементов
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.02.2012, 19:24  [ТС]
Нет, без всяких третьих потоков, только два потока рассматриваем.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
12.02.2012, 21:33
если размер массива не изменяется - ничего не перепутается.

Добавлено через 1 минуту
и вообще на этот счет существует правило: доступ к общим данным безопасен до тех пор, пока эти данные только читаются.

другими словами, если как-то другой поток начнет изменять данные, тогда UB.
2
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
13.02.2012, 01:30
будь оно иначе... думаю мультипоточность не имела бы никакого реального применения. ни во что верить нельзя было бы)
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
13.02.2012, 12:56  [ТС]
Будь оно иначе, всё решалось бы средствами синхронизации, так что мультипоточность всё-таки какое-никакое применение имела бы. Но в одном вы правы- из-за такого маленького вопроса не стоило и огород городить. Пойдём дальше- если каждый поток изменяет соответствующий ему элемент массива. И сразу же: если мы имеем дело не с массивом, а, допустим, со словарём?
C++
1
2
3
4
map<char,int> first;
 
  first['a']=10;
  first['b']=30;
Допустим один поток изменяет
first['a'], а второй first['b'], могут ли они перепутать элементы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2012, 12:56
Помогаю со студенческими работами здесь

Получить массив комбинаций, где элементы массива могут принимать несколько значений
Помогите получить список комбинаций. Вот например двумерный массив: , , Значения в дужках это значения которые может принимать...

Дан целочисленный массив из n элементов. Элементы массива могут принимать произвольные значения
Дан целочисленный массив из n элементов. Элементы массива могут принимать произвольные значения от 0 до 1000. Написать программу, которая...

Ввести два одномерных массива и заменить нулями те элементы второго массива, которые есть в первом
Ввести два одномерных массива и заменить нулями те элементы второго массива, которые есть в первом

Ввод в массив элементы другого массива.
Здравствуйте, в задаче нужно из текстовой строки удалить пробелы и переписать символы в другой массив vector. Пробелы я нашёл как убрать, а...

Записать в массив элементы другого массива
Дан массив B(15). Записать в массив элементы массива B&gt;5. Помогите, пожалуйста, составить программу, до завтра нужно для зачёта.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru