Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
Заблокирован

Потокобезопасность переменной

18.10.2020, 12:03. Показов 5909. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Правильно ли я понимаю, что стандартным способом обеспечения потокобезопасности переменной является использование методов класса Interlocked (который делает ряд операций с переменной атомарными)?
Есть ли другие способы?
Например, можно ли обеспечить потокобезопасность свойства, защитив одним ключевым словом lock код и геттера и сеттера свойства?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2020, 12:03
Ответы с готовыми решениями:

Потокобезопасность в C#
в общем вот есть такая структура данных, не будем вникать зачем мне она и что она делает, думаю тут и так понятно public class...

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

Потокобезопасность uint
Всем привет. К примеру есть некий статический объект класса Player и он содержит: public uint PlayerZone; и есть к примеру 2...

28
Заблокирован
31.10.2020, 18:44  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
на x86
это же анахронизм?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
31.10.2020, 18:49
Цитата Сообщение от titan4ik Посмотреть сообщение
это же анахронизм?
Ну, что поделаешь.
Тем не менее есть разница, некоторые типы атомарные на x64 не атомарны на x86.
На ум приходит тоkько long, но возможно ещё есть и другие.
1
Заблокирован
07.11.2020, 19:20  [ТС]
Относительно атомарности типов и операций:
Цитата Сообщение от kolorotur Посмотреть сообщение
Если это чтение или запись переменных типа bool, char, byte, sbyte, short, ushort, uint, int, float, чтение или запись перечислений (enum), использующих вышеназванные типы в качестве базовых, а так же чтение или запись переменной любого ссылочного типа, то операция атомарна.
Остальные операции атомарности не гарантируют. Если это не методы библиотеки, которые реализуют атомарные операции.
Добавлено через 1 минуту
то бишь, dooble это уже не атомарный тип?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
07.11.2020, 19:32
Цитата Сообщение от titan4ik Посмотреть сообщение
то бишь, dooble это уже не атомарный тип?
В x64 - атомарный.

Добавлено через 1 минуту
Так же как long и ulong
1
Заблокирован
07.11.2020, 20:11  [ТС]
То сообщение было старое 2016 года.
А где можно смотреть актуальный официальный список атомарных типов?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
07.11.2020, 20:30
Цитата Сообщение от titan4ik Посмотреть сообщение
А где можно смотреть актуальный официальный список атомарных типов?
Я не видел такового, но и не искал специально.
То что пишу (в этом отношении) основано на знании ассемблера.

Добавлено через 6 минут
И этого точно не будет в спеке C#, так как определяется не самим языком, а платформой на которой он используется.
Если, допустим будет реализован C# для 8-битовых процессоров - на них атомарными будут только байты.

Добавлено через 3 минуты
Если говорить за Net, то в нём гарантируется атомарность только методов Interlocked.
Для всех остальных надо реализовывать самостоятельно, если, конечно, требуется обеспечить гарантии на многоплатформенности.
1
Заблокирован
07.11.2020, 21:01  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если говорить за Net, то в нём гарантируется атомарность только методов Interlocked.
и геттеры сеттеры свойств, как вы писали выше - тоже атомарные операции, если внутри них используются атомарные типы. А если не атомарные, но нужно использовать Interlocked, которые определены не для всех типов)
Какая изрядная путаница. Это всё нужно бы свести в одно место. Да нет такого места.
Интересно, в c++ так же или более строго с поткобезопасностью?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
07.11.2020, 21:07
Цитата Сообщение от titan4ik Посмотреть сообщение
и геттеры сеттеры свойств, как вы писали выше - тоже атомарные операции,
У автосвойств.

Добавлено через 1 минуту
Атомарной может быть только ОДНА операция.
ПРИСВОЕНИЕ значения (в том числе return) - это одна операция.
0
Заблокирован
07.11.2020, 21:09  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У автосвойств.
ТОЛЬКО у АВТОСВОЙСТВ значит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2020, 21:09

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

Потокобезопасность ConcurrentDictionary vs Dictionary
Добрый день. Довольно наивный вопрос, но ответа я на него не нашел. Я знаю что ConcurrentDictionary это потокобезопасный Dictionary. ...

Потокобезопасность, найти ошибки в коде
Привет всем. Есть код обхода в ширину. Я хочу использовать пр этом несколько потоков, как я понимаю необходимо сделать очередь...

Многопоточность, потокобезопасность. Простая программа по обработке .txt файлов
Добрый день, коллеги. Помогите исправить код. Программа запрашивает количество потоков, делит их между текстовыми файлами исходя из...

Надо вывести название переменной, тип данных переменной, значение переменной
у нас есть переменная int variable = 0; Надо вывести название переменной, тип данных переменной, значение переменной как это сделать?


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru