Является ли обращение к массиву векторов C++ потокобезопасным?
От: Аноним  
Дата: 23.06.12 14:01
Оценка:
В классе C++ объявлен массив векторов:

std::vector<uint8_t> streams[2];

С этим массивом работают 2 потока, первый добавляет-читает-изменяет-удаляет только элементы вектора streams[0], второй поток добавляет-читает-изменяет-удаляет только элементы вектора streams[1]. Является ли данная операция потокобезопасной?
Re: Является ли обращение к массиву векторов C++ потокобезопасным?
От: Сыроежка  
Дата: 23.06.12 14:13
Оценка: 1 (1) +1
Здравствуйте, Аноним, Вы писали:

А>В классе C++ объявлен массив векторов:


А>std::vector<uint8_t> streams[2];


А>С этим массивом работают 2 потока, первый добавляет-читает-изменяет-удаляет только элементы вектора streams[0], второй поток добавляет-читает-изменяет-удаляет только элементы вектора streams[1]. Является ли данная операция потокобезопасной?


У вас каждый потоу работает со своим вектором, так что я не вижу проблем.
Меня можно встретить на www.cpp.forum24.ru
Re[2]: Является ли обращение к массиву векторов C++ потокобезопасным?
От: prrt  
Дата: 23.06.12 14:16
Оценка:
Ок, спасибо! Тоже так думал, но почему-то были сомнения.
Re: Является ли обращение к массиву векторов C++ потокобезопасным?
От: MasterZiv СССР  
Дата: 24.06.12 08:35
Оценка: -1
On 06/23/2012 06:01 PM, Аноним 904 wrote:

Само обращение не может быть потокобезопасным или нет.

> std::vector<uint8_t> streams[2];

>
> С этим массивом работают 2 потока, первый добавляет-читает-изменяет-удаляет
> только элементы вектора streams[0], второй поток
> добавляет-читает-изменяет-удаляет только элементы вектора streams[1].

Это как можно добавлять или удалять один элемент вектора ?


Является
> ли данная операция потокобезопасной?

Нет. Елси один поток меняет вектор, другой его читает, уже нужно защищать вектор
мьютексами.
Posted via RSDN NNTP Server 2.1 beta
Re: Является ли обращение к массиву векторов C++ потокобезопасным?
От: okman Беларусь https://searchinform.ru/
Дата: 24.06.12 09:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В классе C++ объявлен массив векторов:


А>std::vector<uint8_t> streams[2];


А>С этим массивом работают 2 потока, первый добавляет-читает-изменяет-удаляет только элементы вектора streams[0], второй поток добавляет-читает-изменяет-удаляет только элементы вектора streams[1]. Является ли данная операция потокобезопасной?


Ответ зависит от того, что подразумевается под потокобезопасностью в данном конкретном случае.
Re[2]: Является ли обращение к массиву векторов C++ потокобезопасным?
От: CreatorCray  
Дата: 24.06.12 10:48
Оценка: +1
Здравствуйте, MasterZiv, Вы писали:

>> std::vector<uint8_t> streams[2];

MZ>Это как можно добавлять или удалять один элемент вектора ?

там массив векторов.
Один поток обращается к первому вектору, другой — ко второму.

>> Является ли данная операция потокобезопасной?


MZ>Нет. Елси один поток меняет вектор, другой его читает, уже нужно защищать вектор мьютексами.


Вектора то разные.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: Является ли обращение к массиву векторов C++ потокобезопасным?
От: MasterZiv СССР  
Дата: 24.06.12 10:55
Оценка:
On 06/24/2012 12:35 PM, MasterZiv wrote:

>> С этим массивом работают 2 потока, первый добавляет-читает-изменяет-удаляет

>> только элементы вектора streams[0], второй поток
>> добавляет-читает-изменяет-удаляет только элементы вектора streams[1].
>
> Это как можно добавлять или удалять один элемент вектора ?

А массивы, не заметил блин...
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Является ли обращение к массиву векторов C++ потокобезопасным?
От: MasterZiv СССР  
Дата: 24.06.12 11:46
Оценка:
On 06/24/2012 02:48 PM, CreatorCray wrote:

>> > std::vector<uint8_t> streams[2];

> MZ>Это как можно добавлять или удалять один элемент вектора ?
>
> там массив векторов.
> Один поток обращается к первому вектору, другой — ко второму.

Если ты к любому объекту в потоке (или нескольких) будешь обращаться только на
чтение и нигде во время жизни потока (потоков) этот объект не будет меняться,
тогда оно будет "потокобезопасным" -- т.е. не будет гонок.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Является ли обращение к массиву векторов C++ потокобезопасным?
От: CreatorCray  
Дата: 24.06.12 13:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Если ты к любому объекту в потоке (или нескольких) будешь обращаться только на

MZ>чтение и нигде во время жизни потока (потоков) этот объект не будет меняться,
MZ>тогда оно будет "потокобезопасным" -- т.е. не будет гонок.

Там уже и так разные потоки к разным векторам обращаются. Перечитай первое сообщение темы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.