Публикации по теме 'copy-on-write'


Как работает копирование при записи в Swift Fast AF
Swift предоставляет мощный инструмент для оптимизации производительности и сокращения использования памяти, называемый копированием при записи. Этот метод позволяет совместно использовать несколько копий значения до тех пор, пока одну из копий не потребуется изменить, после чего делается копия, чтобы избежать изменения исходного значения. Одним из распространенных типов в Swift, использующих копирование при записи, является массив. Когда массив присваивается новой переменной или..

Вопросы по теме 'copy-on-write'

Можно ли безопасно отключить ListIterator для Iterator? (Реализация оболочки CopyOnWrite для List)
У меня есть много примеров в коде, где Collection, чаще всего List, возвращается из метода, и для учета вызывающего абонента, возможно, изменяющего этот список, создается защитная копия. JDK, похоже, не предоставляет оболочку для этой цели, поэтому...
100 просмотров
schedule 01.11.2021

Как создать контейнер с семантикой копирования при записи? (Быстрый)
У меня очень большая структура, и я хочу убедиться, что ее не копируют без нужды. Как сделать для него контейнер для копирования при записи?
1523 просмотров
schedule 27.10.2021

Как сделать так, чтобы изменения в базовом файле после mmap() не отображались для моей программы?
Согласно справочной странице mmap() : КАРТА_ЧАСТНАЯ Создайте частное сопоставление копирования при записи. Обновления сопоставления невидимы для других процессов, отображающих тот же файл, и не переносятся в базовый файл. Не указано,...
497 просмотров
schedule 27.02.2022

иногда мы объявляем & перед функцией в кодировании на основе классов
Я следую кодированию на основе классов для разработки проекта. Недавно я видел, что иногда мы ставим «&» перед именем функции. для примера.. а не определение function test() это определяется как function &test() есть ли...
176 просмотров
schedule 06.03.2022

Как отключить копирование при записи и заполнение нулями по запросу для mmap()
Я реализую команду cp (копирование файла), используя mmap(). Для этого я сопоставил исходный файл в режиме MAP_PRIVATE (поскольку я просто хочу прочитать) и целевой файл в режиме MAP_SHARED (поскольку мне нужно записать измененное содержимое целевого...
2239 просмотров
schedule 23.03.2022

Почему системный вызов fork() копирует память родительского процесса?
Когда мы выполняем процесс из терминала, процесс терминала выполняет fork , а затем exec . Во время разветвления он создает свою собственную копию, содержащую информацию о конкретном процессе, в данном случае, например, Bash . Копирование этой...
46 просмотров

разветвление в linux о COW
В Linux я знаю, что это реализовано COW из-за расточительства. Но в книге говорится, что когда ребенок вызывает exec() сразу после fork(), адресные пространства никогда не копируются. Но я думаю, что если ребенок использует exec(), это означает...
148 просмотров
schedule 21.07.2022

Как написать список копирования при записи в .NET
Как написать потокобезопасный список, используя модель копирования при записи в .NET? Ниже приведена моя текущая реализация, но после большого количества чтения о многопоточности, барьерах памяти и т. д. я знаю, что мне нужно быть осторожным, когда...
2050 просмотров

Почему CopyOnWriteArrayList копирует при записи?
Из CopyOnWriteArrayList.java метод добавления выглядит следующим образом: public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); int len = elements.length;...
1679 просмотров

Чисто функциональные структуры данных с копированием при записи?
Я хочу иметь преимущество функциональных структур данных (несколько версий данных, которые могут совместно использовать структуру), но иметь возможность модифицировать их в императивном стиле. О чем я думаю (и возможное использование): ролевая...
1886 просмотров

Предотвращает ли копирование при записи дублирование данных в массивах?
Я программирую клиент веб-API на PHP, который анализирует данные CSV в ассоциативные массивы, и я хочу защитить своих пользователей от дублирования данных при использовании этих массивов. Мои пользователи никогда не будут писать в эти массивы...
5329 просмотров
schedule 03.02.2023

системный вызов fork: выделяется ли предварительно выделенная родительская память для дочерних элементов?
int *g=NULL; main() { g = malloc(40000000);//allocate 40MB in the parent fork(); while(1); } Если я запускаю эту программу и смотрю то же самое вверху, я вижу 40 МБ памяти, выделенной для родителя, а также для ребенка. Но в фоновом...
102 просмотров
schedule 25.03.2023

Как работает копирование при записи в fork-exec?
Процесс fork является дочерним процессом и вызывает exec() в дочернем процессе. При копировании при записи после fork родительский и дочерний процессы совместно используют память. Когда дочерний процесс вызывает exec() для загрузки другого...
717 просмотров
schedule 20.10.2022

Как ядро ​​Linux определяет, был ли изменен адрес памяти для реализации COW?
Исходный код Здесь: #include <stdio.h> #include <stdlib.h> void main() { int *a = malloc(sizeof(int)); *a = 11; int b = 22;//on the stack int pid = fork(); if (pid == 0) { printf("pid=%d, a = %d,...
1027 просмотров
schedule 13.10.2022

QList полиморфного класса с копированием при записи?
Я пытаюсь создать QList полиморфного типа, который по-прежнему использует Qt неявный обмен . Мой конкретный вариант использования — передача элементов, хранящихся в QList, в QtConcurrent::mapped . Все элементы происходят от базового класса,...
493 просмотров
schedule 28.04.2023

Невозможно диагностировать проблему MISCONF redis при запуске рабочего сервера сельдерея
Я использую рабочий сервер сельдерея с Redis в качестве URL-адреса брокера (для получения задач), а также в качестве бэкэнда. BROKER_URL = 'redis://localhost:6379/2' CELERY_RESULT_BACKEND = 'redis://localhost:6379/2' app =...
1542 просмотров
schedule 15.06.2023

Ядро копирует страницы CoW после выхода из дочернего процесса
В Linux при разветвлении процесса сопоставления памяти родительского процесса клонируются в дочерний процесс. На самом деле, из соображений производительности страницы настроены на копирование при записи — изначально они являются общими, и в...
202 просмотров

Как предотвратить ошибки страницы после выхода ребенка?
Хороший способ создать моментальный снимок процесса — использовать fork() для создания дочернего процесса. Память дочернего процесса будет копией родительского процесса. Вместо того, чтобы жадно копировать всю память, ОС просто помечает...
291 просмотров
schedule 16.03.2023

Копировать при записи: что происходит, когда я изменяю родительский процесс?
Я нахожу следующее описание копирования при записи. If child process writes to memory, the parent retains the physical page and the child is given a new one with the correct value stored. Если я использую fork() для получения дочернего...
24 просмотров
schedule 05.04.2023

Является ли копирование при записи в Swift потокобезопасным?
Сделать массив или словарь типом значения по определению, но затем фактически скопировать его только тогда, когда одна ссылка на него пытается изменить его, — прекрасная идея, но это заставляет меня насторожиться в многопоточном/многопотоковом...
133 просмотров
schedule 09.06.2023