Задать вопрос
@antonwx

Как сделать переменную типа long потокобезопасной?

У меня есть переменная типа long.
long time = 0;
Из неё могут читать и в неё могут записывать значения два разных потока.
Я не могу объявить её как volatile. Не могу написать lock(time) { ... }, возникает ошибка. Что мне сделать, чтобы можно было использовать эту переменную в двух потоках и не иметь проблем?
  • Вопрос задан
  • 210 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    Профессия "C# разработчик"
    1 неделя
    Далее
  • XYZ School
    C# для разработки игр
    5 месяцев
    Далее
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
Решения вопроса 1
1. Использовать
private readonly object timeLock = new();
2. Использовать Mutex/Semaphore/SemaphoreSlim
3. Использовать класс Interlocked

Но я бы попробовал так:
4. Переосмыслить архитектуру, чтобы не было общих изменяемых ресурсов
5. Убедиться, что действительно вам нужен именно long, а не DateTime(Offset) или TimeSpan
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы