Публикации по теме '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 просмотров
schedule
13.07.2022
разветвление в linux о COW
В Linux я знаю, что это реализовано COW из-за расточительства. Но в книге говорится, что когда ребенок вызывает exec() сразу после fork(), адресные пространства никогда не копируются. Но я думаю, что если ребенок использует exec(), это означает...
148 просмотров
schedule
21.07.2022
Как написать список копирования при записи в .NET
Как написать потокобезопасный список, используя модель копирования при записи в .NET?
Ниже приведена моя текущая реализация, но после большого количества чтения о многопоточности, барьерах памяти и т. д. я знаю, что мне нужно быть осторожным, когда...
2050 просмотров
schedule
27.07.2022
Почему CopyOnWriteArrayList копирует при записи?
Из CopyOnWriteArrayList.java метод добавления выглядит следующим образом:
public boolean add(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
Object[] elements = getArray();
int len = elements.length;...
1679 просмотров
schedule
31.07.2022
Чисто функциональные структуры данных с копированием при записи?
Я хочу иметь преимущество функциональных структур данных (несколько версий данных, которые могут совместно использовать структуру), но иметь возможность модифицировать их в императивном стиле.
О чем я думаю (и возможное использование): ролевая...
1886 просмотров
schedule
27.07.2023
Предотвращает ли копирование при записи дублирование данных в массивах?
Я программирую клиент веб-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 просмотров
schedule
02.02.2023
Как предотвратить ошибки страницы после выхода ребенка?
Хороший способ создать моментальный снимок процесса — использовать 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