LINUX.ORG.RU

История изменений

Исправление Einstok_Fair, (текущая версия) :

Допустим, что рама хранит два массива:
- массив тех, кто находится рядом с этой рамой
- массив тех, кто эту раму в данный момент моет

Так как рама не определяет смерть людей, то это массивы типа GArray, и содержат они в себе GWeakRef.

Допустим, какая-то нить решила взять и напечатать имена мам, которые в данный момент моют эту раму. Это вообще сильно похоже на транзакцию - получить ссылки на объекты мам (и, вероятно, увеличить их refcount-ы). Затем вывести имена на печать. Затем отпустить ссылки на мам.
Наращивать refcount для мам обязательно, потому что иначе при выводе имён мам могут возникнуть проблемы (объект может быть удалён в другом потоке).

Как конкретно получить из GWeakRef указатель с одновременным наращиванием refcount? g_weak_ref_get

Настораживает то, что операция получения списка мам неатомарная. Хорошо бы ещё иметь возможность блокировать изменение списка мам на время снятия копии списка.

Как получить из массива GWeakRef массив GPtrArray в одно действие с блокировкой других операций с исходным массивом на время выполнения операции копирования массива?

В общем, отсутствие учебного примера расстраивает.

Исправление Einstok_Fair, :

Допустим, что рама хранит два массива:
- массив тех, кто находится рядом с этой рамой
- массив тех, кто эту раму в данный момент моет

Так как рама не определяет смерть людей, то это массивы типа GArray, и содержат они в себе GWeakRef.

Допустим, какая-то нить решила взять и напечатать имена мам, которые в данный момент моют эту раму. Это вообще сильно похоже на транзакцию - получить ссылки на объекты мам (и, вероятно, увеличить их refcount-ы). Затем вывести имена на печать. Затем отпустить ссылки на мам.
Наращивать refcount для мам обязательно, потому что иначе при выводе имён мам могут возникнуть проблемы (объект может быть удалён в другом потоке).

Здесь настораживает то, что операция получения списка мам неатомарная. Хорошо бы ещё иметь возможность блокировать изменение списка мам на время снятия копии списка.

Как конкретно получить из GWeakRef указатель с одновременным наращиванием refcount? g_weak_ref_get

Как получить из массива GWeakRef массив GPtrArray в одно действие с блокировкой других операций с исходным массивом на время выполнения операции копирования массива?

В общем, отсутствие учебного примера расстраивает.

Исправление Einstok_Fair, :

Допустим, что рама хранит два массива:
- массив тех, кто находится рядом с этой рамой
- массив тех, кто эту раму в данный момент моет

Так как рама не определяет смерть людей, то это массивы типа GArray, и содержат они в себе GWeakRef.

Допустим, какая-то нить решила взять и напечатать имена мам, которые в данный момент моют эту раму. Это вообще сильно похоже на транзакцию - получить ссылки на объекты мам (и, вероятно, увеличить их refcount-ы). Затем вывести имена на печать. Затем отпустить ссылки на мам.
Наращивать refcount для мам обязательно, потому что иначе при выводе имён мам могут возникнуть проблемы (объект может быть удалён в другом потоке).

Здесь настораживает то, что операция получения списка мам неатомарная. Хорошо бы ещё иметь возможность блокировать изменение списка мам на время снятия копии списка.

Как конкретно получить из GWeakRef указатель с одновременным наращиванием refcount? g_weak_ref_get

Как получить из массива GWeakRef массив GPtrArray в одно действие с блокировкой других операций на его время?

В общем, отсутствие учебного примера расстраивает.

Исправление Einstok_Fair, :

Допустим, что рама хранит два массива:
- массив тех, кто находится рядом с этой рамой
- массив тех, кто эту раму в данный момент моет

Так как рама не определяет смерть людей, то это массивы типа GArray, и содержат они в себе GWeakRef.

Допустим, какая-то нить решила взять и напечатать имена мам, которые в данный момент моют эту раму. Это вообще сильно похоже на транзакцию - получить ссылки на объекты мам (и, вероятно, увеличить их refcount-ы). Затем вывести имена на печать. Затем отпустить ссылки на мам.
Наращивать refcount для мам обязательно, потому что иначе при выводе имён мам могут возникнуть проблемы (объект может быть удалён в другом потоке).

Здесь настораживает то, что операция получения списка мам неатомарная. Хорошо бы ещё иметь возможность блокировать изменение списка мам на время снятия копии списка.

Как конкретно получить из GWeakRef указатель с одновременным наращиванием refcount?

Как получить из массива GWeakRef массив GPtrArray в одно действие с блокировкой других операций на его время?

В общем, отсутствие учебного примера расстраивает.

Исходная версия Einstok_Fair, :

Допустим, что рама хранит два массива:
- массив тех, кто находится рядом с этой рамой
- массив тех, кто эту раму в данный момент моет

Так как рама не определяет смерть людей, то это массивы типа GArray, и содержат они в себе GWeakRef.

Допустим, какая-то нить решила взять и напечатать имена мам, которые в данный момент моют эту раму. Это вообще сильно похоже на транзакцию - получить ссылки на объекты мам (и, вероятно, увеличить их refcount-ы). Затем вывести имена на печать. Затем отпустить ссылки на мам.
Наращивать refcount для мам обязательно, потому что иначе при выводе имён мам могут возникнуть проблемы (объект может быть удалён в другом потоке).

Здесь настораживает то, что операция получения списка мам неатомарная. Хорошо бы ещё иметь возможность блокировать изменение списка мам на время снятия копии списка.

Как конкретно получить из GWeakRef указатель с одновременным наразиваем refcount?

Как получить из массива GWeakRef массив GPtrArray в одно действие с блокировкой других операций на его время?

В общем, отсутствие учебного примера расстраивает.