Использование std :: forward_list есть ли какие-либо данные гонки при удалении и inserting? Например, у меня есть один поток, который ничего не делает, кроме добавления новых элементов в конце списка, и у меня есть другой поток, который идет (тот же) список и может стереть из него элементы.Стирает и вставляет в односвязную цепочку потокобезопасную?
Из того, что я знаю о связанных списках, каждый элемент содержит указатель на следующий элемент, поэтому, если я удалю последний элемент, в то же время, когда я вставляю новый элемент, это приведет к гонке данных или сделает эти контейнеры работают по-разному (или они справляются с этой возможностью)?
Если это гонка данных, есть ли (простой и быстрый) способ избежать этого? (Примечание: резьба, которая вставлена, является наиболее критической по скорости для этих двух.)
Если вам нужно спросить, хорошее эмпирическое правило: Нет, это не безопасно для потоков. Собственно, поцарапать первую часть, это всегда хорошее эмпирическое правило. – delnan
Предоставляет ли стандарт гарантии безопасности резьбы? Если нет, то не стоит полагаться на него, даже если он работает на вашем компиляторе сегодня. –
@MarkRansom: Да, стандарт делает гарантии безопасности потоков для контейнеров. Тем не менее, они довольно слабы, и их недостаточно, чтобы охватить вопрос пользователя в вопросе (см. Также мой ответ). –