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

Всем привет 👋 Зачада со свездойчкой.... У меня не компилится... Хотя в

расту давненько. Не могу понять с фига ли до меня компилятор докопался 🤦‍♂️😡

future cannot be sent between threads safely

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=3c749ffecb986059c39af316121ad06b

33 ответов

51 просмотр
Stanislav-Sagan Автор вопроса

Пока ре расскоментировать спавн потока (там тудушка)

Там написано, где нужно раскоменнтировать чтобы сломать

Санек Каравайчик
Там написано, где нужно раскоменнтировать чтобы сл...

Rc нельзя между потоками передавать, а tokio::spawn потенциально может запустить эту фьючу в другом потоке. Нужен spawn_local какой-то. Если заменить на tokio::task::spawn_local, то компилится.

Stanislav-Sagan Автор вопроса
Alexander Ruliov
Rc нельзя между потоками передавать, а tokio::spaw...

Дело в том что я и не передаю Rc через потоки....

Stanislav Sagan
Дело в том что я и не передаю Rc через потоки....

SomeStruct хранит в себе Rc Токио может воркстилить тасочки, поэтому футура и её составляющие должны быть Send

mental stability🥺✨
SomeStruct хранит в себе Rc Токио может воркстилит...

Ты имеешь ввиду где queue и map? Там в объявлении Rc указаны, больше я их нигде не нашел

Stanislav-Sagan Автор вопроса
mental stability🥺✨
SomeStruct хранит в себе Rc Токио может воркстилит...

Что такое воркстилить? Давай я чуть перепишу код... Создать Rc нет проблем. А вот воспользоваться им не могу (( https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=60627dee402dcc141897a37d69aeb54d

mental stability🥺✨
Какая разница? Структура не Send

Это можно решить через LocalSet в Токио, либо убрать Rc

mental stability🥺✨
Какая разница? Структура не Send

Я думал что если все объекты внутри структуры имплементят send, то и структура тоже является send по умолчанию

mental stability🥺✨
Ну да

А в структуре используются Rc, значит она как раз не Send, в ней надо все на Arc

Stanislav Sagan
Что такое воркстилить? Давай я чуть перепишу код...

Воркстил это когда свободный поток крадёт задачи из других потоков, чтобы балансировать нагрузку. В расте между потоками можно перемещать только Т: Send

Stanislav-Sagan Автор вопроса
Stanislav Sagan
А как код поправить чтоб он работал?

Заменить в полях структуры Rc на Atc

Stanislav Sagan
А как код поправить чтоб он работал?

Rc/Arc Либо спавнить в локалсете. Как им пользоваться есть в документации токио

Stanislav-Sagan Автор вопроса
mental stability🥺✨
Rc/Arc Либо спавнить в локалсете. Как им пользоват...

https://docs.rs/tokio/latest/tokio/task/struct.LocalSet.html А, о, спасибо))) Как раз мой случай))

Stanislav-Sagan Автор вопроса

Хотя не, я не кидаю Rc в async move как в примере... у меня все локально используется...

Stanislav Sagan
Хотя не, я не кидаю Rc в async move как в примере....

Ещ раз. Твоя структура не Send, так как вложенное в неё поле !Send Отсюда вытекает что вся твоя футура не Send, поэтому такую футуру перемещать нельзя. Тут не влияет, муваешь ты Rc внутрь или нет

Stanislav-Sagan Автор вопроса
mental stability🥺✨
Ещ раз. Твоя структура не Send, так как вложенное ...

Та вот это и не понимаю. Что я ее никуда не муваю.. а ругается что она не Send

Stanislav Sagan
Та вот это и не понимаю. Что я ее никуда не муваю....

Ты не муваешь, а токио внутри себя может мувнуть

mental stability🥺✨
Ты не муваешь, а токио внутри себя может мувнуть

Смотри, у тебя 2 таски в одном треде. По очереди складывают счетчик - ок Как только токио считает, что твой тред слишком загруженный, другой тред крадёт 1 таску. Теперь они параллельно начинают прибавлять счетчик. Так как он не атомарный, то может случится одновременный инкремент, то UB.

Stanislav-Sagan Автор вопроса
mental stability🥺✨
Смотри, у тебя 2 таски в одном треде. По очереди с...

Ну у меня select уже даже отдельно, some_struct отдельно....

Stanislav Sagan
screenshot Ну у меня select уже даже отдельно, some_struct о...

В общем, убирай SomeStruct из футуры Или меняй Rc на Arc

Stanislav-Sagan Автор вопроса
mental stability🥺✨
Смотри, у тебя 2 таски в одном треде. По очереди с...

Я даже мутабельные сслыки в select засовываю без проблем... а тут Rc какой-то не понравился

Stanislav Sagan
Я даже мутабельные сслыки в select засовываю без п...

Растбук читать лучше надо было, там об этом точно глава есть Ещё на cheats.rs написано про Send/Sync

Stanislav-Sagan Автор вопроса

https://stackoverflow.com/questions/74497663/why-does-rc-works-in-async-fn не понятно

Stanislav Sagan
screenshot Ну у меня select уже даже отдельно, some_struct о...

tokio::select! это макрос который раскроется c .await внутри. Когда происходит .await твоя таска отдаётся экзекьютору, который в следующий раз может отправить её исполнятся на другом потоке. А у тебя между await поинтами непотокобезопасный Rc счётчик. Представь что ты куда то его отправил до .await поинта, а потом после .await поинта ты обращаешься к нему с другого потока

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта