Предостережения при передаче аргумента в качестве постоянной ссылки в многопоточном приложении

#c #c 11

#c #c 11

Вопрос:

Есть ли какой-либо недостаток при передаче как const и по ссылке в многопоточном приложении?

Я провел некоторое исследование, но не смог найти никакого ответа, который объяснял бы его поведение с потоковой обработкой, и это предостережения.

Комментарии:

1. Я думаю, что для ответа на это, вероятно, потребуется целая книга или курс, а не один ответ! Но в принципе, если у вас есть ссылки на один и тот же объект в разных потоках, вам нужна какая-то синхронизация. Если все ссылки относятся к const , то вы можете быть в безопасности (при условии, что класс хорошо спроектирован).

2. О потокобезопасности const: Const означает потокобезопасность?

3. И Многопоточность C 11 — Тщательно передавайте аргументы потокам

4. @BoBTFish Вам не нужна синхронизация, если все обращения выполняются на чтение. Или если гарантировано, что произойдет только одна запись и никаких чтений. О том, как достичь этих гарантий, можно было бы написать целую книгу.

5. @SumitJha Базовое правило простое: если несколько потоков обращаются к одному и тому же объекту и хотя бы одно из этих обращений связано с записью , то у вас проблема, в остальном все в порядке. И тогда вам также придется беспокоиться о сроках службы (но это еще одна широкая область в C ).