The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Доступен набор компиляторов LLVM 18 , opennews (??), 07-Мрт-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


40. "Доступен набор компиляторов LLVM 18 "  +/
Сообщение от n00by (ok), 07-Мрт-24, 16:50 
https://github.com/vimpunk/mio

А это правильно, что не добавили.

Вот это зачем?


inline size_t page_size()
{
    static const size_t page_size = []
    {
#ifdef _WIN32
        SYSTEM_INFO SystemInfo;
        GetSystemInfo(&SystemInfo);
        return SystemInfo.dwAllocationGranularity;
#else
        return sysconf(_SC_PAGE_SIZE);
#endif
    }();
    return page_size;
}

И где там mremap, в котором вся прелесть?
Если хотите мапить файлы стандартным образом - ну дык допилите работу с файлами в стандартной библиотеке, там же возможна буферизация, а детали реализации не оговариваются.
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

45. "Доступен набор компиляторов LLVM 18 "  +/
Сообщение от Аноним (45), 07-Мрт-24, 17:13 
Смысл не в том, чтобы втащить mio в стандартную библиотеку целиком как есть — разумеется все проблемы существующей реализации должны быть устранены (мне вообще крайне не нравится, что возвращаемые типы не наследуются у std::span<нужный тип>, и поэтому мне приходится это делать самому, и уже работать с std::span). И ремаппинг безусловно должен быть, как и отображение-выделение страниц без файлов, отображение анонимных страниц, и страниц, общих для нескольких процессов — мне из-за этого пришлось свой велосипед написать. Смысл в том, что отображение файлов в память нужно всем, но почему-то его нет в стандартной библиотеке, и приходится возится с васянозависимостями.
Ответить | Правка | Наверх | Cообщить модератору

47. "Доступен набор компиляторов LLVM 18 "  +/
Сообщение от Аноним (45), 07-Мрт-24, 17:14 
*возиться
Ответить | Правка | Наверх | Cообщить модератору

53. "Доступен набор компиляторов LLVM 18 "  +1 +/
Сообщение от n00by (ok), 07-Мрт-24, 17:36 
А проблемы не будут устранены, потому что механизмы ОС различаются. Вон в Cygwin сделали ремаппинг стандартным образом - через memcpy, можете использовать. ;)
Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

61. "Доступен набор компиляторов LLVM 18 "  +/
Сообщение от Аноним (60), 07-Мрт-24, 19:06 
Не так уж сильно и различаются:
* выделение пустых страниц
* задание им флагов доступа
* их освобождение
* отображение файла в память

есть везде! А для отличающихся нюансов — ну так никто и не запрещал юзать системное API на std::begin(allocatedPageSpan).

Ответить | Правка | Наверх | Cообщить модератору

105. "Доступен набор компиляторов LLVM 18 "  +/
Сообщение от n00by (ok), 09-Мрт-24, 08:33 
Я понимаю, что тут каждый Аноним умнее создателей Cygwin, даже если никогда не работал с секциями в NT и потому пропустил в плане "зарезервировать страницы". Но это в теории. На практике внутри mramap() почему-то до сих пор memcpy().
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру