Idiomati c Rust способ иметь несколько объектов, потреблять неизменную ссылку и работать одновременно - PullRequest
0 голосов
/ 23 апреля 2020

Какой самый простой способ использовать async / await (или другой способ, например, rayon ящик), чтобы несколько экземпляров структур запускали функцию, которая получает неизменную ссылку параллельно?

У меня есть проект цифровой обработки сигналов, в котором я постоянно создаю очень легкую структуру, представляющую образец (просто комплексное число и индекс, поэтому 2x f64 + 1x usize), затем я хочу передать его в несколько структур, представляющих каналы и пусть они выполняют дорогостоящие вычисления на одной и той же выборке параллельно. Это кажется чем-то относительно простым, но мне трудно с этим справиться.

1 Ответ

0 голосов
/ 29 апреля 2020

Когда вы пишете синхронный код, идиоматический способ c заключается в использовании ящиков rayon или crossbeam, которые предоставляют потоки с областями видимости, которые позволяют вам сохранять ссылки через границы потоков.

Потоки с областью действия в настоящее время невозможны с async / await, поэтому в этой экосистеме решение idiomati c должно либо копировать значение, либо делиться им в интеллектуальный указатель с подсчетом ссылок, например Arc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...