Похожие чаты

I'M working on the famous tree of space problem, where

we have an m-ary tree and can lock any node if none of its ancestors or descendants are already locked. I need to make the code thread-safe without using synchronized, mutex, or AtomicInteger.

Here's the Lock method:


static boolean Lock(Node node, int id) {
if (++node.locked > 1 || !node.lockedDescendents.isEmpty()) {
node.locked--;
return false;
}

// Informing ancestors
Node curr = node.parent;
while (curr != null) {
if (curr.locked > 0 || !node.lockedDescendent.isEmpty()) {
Node temp = node.parent;
while (temp != curr) {
temp.lockedDescendent.remove(node);
temp = temp.parent;
}
node.locked--;
return false;
}
curr.lockedDescendent.add(node);
curr = curr.parent;
}

node.id = id;
return true;
}


The issue arises when I lock a child node and a context switch occurs before updating the parent's locked descendants. This can lead to both the child and parent getting locked. How can I resolve this without using while loops or external libraries?

1 ответов

21 просмотр
A- Автор вопроса

15$ bounty

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
8
Anyone else having this error when trying to make transactions?
Datzel
11
Question: How viable is it to use Anvil as the backend infrastructure for managing a TradFi portfolio, while integrating Flexa for instant liquidity and payment solutions? Cou...
Kevin
2
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта