185 похожих чатов

Столкнулся с проблемой — у меня треды с референс-каунтами, и

когда тред завершается, не знаю, как корректно его уничтожать — референс каунт не доходит до нуля, потому что в шедулере висит реф на стеке треда + ещё один на том же стеке в обработчике сискола exit_thread, который уже завершился (плюс в некоторых других местах типа Waker, если тред был убит, когда ожидал чего-то). Как можно бороться с таким или где лучше подсмотреть?

6 ответов

21 просмотр

А зачем у тебя там референс каунты?

ты можешь в реализации завершающего сискола или просто деструктора треда сначала уничтожить все стеки, потом форсировать уменьшение счетчика ссылок до нуля

Rustam
ты можешь в реализации завершающего сискола или пр...

если у тебя прям Arc то это делается методом into_raw

✙ alnyan ✙- Автор вопроса
Rustam
ты можешь в реализации завершающего сискола или пр...

И тогда если в каком-то Waker останется референс на него (или тред выйдет прям в момент, когда Waker пытается его разбудить), то получится UB, потому что Arc в вейкере будет показывать на уже несуществующую память

✙ alnyan ✙
И тогда если в каком-то Waker останется референс н...

перед уничтожением стеков разумеется надо грохнуть все вейкеры

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта