Замок на основе файлов для управления только для чтения или доступа к чтению-записи к файлу или каталогуJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Замок на основе файлов для управления только для чтения или доступа к чтению-записи к файлу или каталогу

Сообщение Anonymous »

Я пишу плагин Kotlin/JVM Gradle, который хранит данные в каталоге приложений-кэш, поэтому данные могут использоваться в отдельных проектах. Мне нужно убедиться, что содержимое не модифицировано во время их использования. Я в основном внедряю пользовательский диспетчер инструментов. Мне просто нужен инструмент для внутреннего использования. Я хочу разрешить одновременный доступ только для чтения. Модификация может быть выполнена как часть задачи или во время действия настройки конфигурации. Замки только для чтения должны быть приоритетными. Но это не необходимо строго. java.nio.channels.filelock , который поддерживает перекрестную блокировку. Тем не менее, Javadoc говорит, что некоторые операционные системы не поддерживают общие замки. Непостоянный заказ на получение блокировки. < /p>
Shared Shared Shiled Service < /h5>
Использование строительства для управления параллельным выполнением задачи не подходит, потому что блокировки должны быть доступны на этапе конфигурации, а также через совершенно отдельные сборки Gradle (например, несколько независимых сборок на CI). Библиотеки < /h5>
Наиболее близкая реализация, которую я обнаружил,-это утилита внутренней границы (FileLockManager), которая использует коммуникацию сокета для получения блокировки в каталогах кэша и предоставления доступа при запросе. Тем не менее, я не могу использовать его, потому что это внутреннее. Если бы была библиотека C, возможно, я мог бы взаимодействовать с ней. < /P>
Требования < /h4>
  • Заблокировать файл, через потоки и процессы, чтобы предотвратить одновременную модификацию. < /Li>
    Правильное и точное поведение предпочтительнее производительности. одновременные читатели.
  • Только один писатель, и нет читателей, пока писатель держит замок.
  • Автор ждет, пока все читатели не закончатся. /> < /li>
    kotlin /jvm с использованием Java 17. < /li>
    Работает надежно на Linux, MacOS и Windows (но необходимо работать только на одной машине за один раз, без сетевой помощи). < /li>
    Невозможно использовать внешние процессы, чтобы они не могли управлять, но не могут быть связаны с ними, но не могут быть связаны с ними. это, они должны быть легкими, можно затенять (чтобы избежать загрязнения Gradle BuildScript ClassPath).


Подробнее здесь: https://stackoverflow.com/questions/795 ... -directory
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»