Size: a a a

Rust — русскоговорящее сообществo

2020 April 20

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Denis
это всё можно делать, но это всё ненадёжно
А если RwLock<File>, то что не так будет?
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
polunin.ai
А, не увидел "читаться"
Я тоже. Там edited, мб его и не было раньше?
источник

D

Denis in Rust — русскоговорящее сообществo
Андрей Власов
А если RwLock<File>, то что не так будет?
позиция указателя на данные внутри, ну то есть вот ты записал, сдвинул указатель, значит при попытке чтения ты ничего не увидишь :)
источник

Y

Yuriy in Rust — русскоговорящее сообществo
Denis
Yuriy а какая задача-то стоит, может уже есть известное решение?
да я для интереса хочу bitcask-о образную базу написать
источник

Y

Yuriy in Rust — русскоговорящее сообществo
в целях обучения
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Denis
позиция указателя на данные внутри, ну то есть вот ты записал, сдвинул указатель, значит при попытке чтения ты ничего не увидишь :)
Ну так я между локами буду делать setpos
источник

D

Denis in Rust — русскоговорящее сообществo
Андрей Власов
Ну так я между локами буду делать setpos
можно, т.е. если ты будешь писать до того, как прочитаешь, то данные перезапишутся? :)
источник

D

Denis in Rust — русскоговорящее сообществo
Yuriy
да я для интереса хочу bitcask-о образную базу написать
ну, если тебе подходит вариант, когда читающий поток увидит данные с запозданием, то в принципе можно смело открывать в каждом потоке свой файл
но вообще обычно базы данных делают mmap (в линуксе) на файл )
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Denis
можно, т.е. если ты будешь писать до того, как прочитаешь, то данные перезапишутся? :)
Не, я делаю так
let locked = shared.lock();
locked.set_pos(idx);

если чтение: locked.read_exact(&mut buff);
если запись: locked.write_all(&buff);
и потом drop(locked);
источник

D

Denis in Rust — русскоговорящее сообществo
а idx где хранится?
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
При записи можно в конец прыгать
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Denis
а idx где хранится?
Локально
источник

D

Denis in Rust — русскоговорящее сообществo
ну в принципе да, можно наверное прыгать в конец а потом обратно "отматывать" (при записи)
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Если перед всеми операциями всегда set_pos, то это бессмысленно
источник

D

Denis in Rust — русскоговорящее сообществo
в общем я бы всё равно советовал какой-то другой, более подходящий механизм заюзать =)
источник

D

Denis in Rust — русскоговорящее сообществo
хотя я пока всё равно не понял, что же именно там должно происходить из разных потоков
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Ага, согласен, топорно
источник

H

Heorhi in Rust — русскоговорящее сообществo
этот ллвм писал какойто наркоман....
источник

H

Heorhi in Rust — русскоговорящее сообществo
он с файлами работает вообще непойми как....
источник

D

Denis in Rust — русскоговорящее сообществo
и скорее всего не один!
источник