Показать исходный текстИстория страницыСсылки сюдаЭкспорт в PDFНаверх Поделиться через Поделиться через... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit TeamsНедавние измененияОтправить по эл.почтеПечатьПостоянная ссылка × Содержание Оперирование Написание кода в C++ Использование лямбда-выражений Параллельность Это старая версия документа! Оперирование Более новый и функциональный способ оперировать над Цепями через процесс, называемый оперирование (operating). Написание кода в C++ Использование лямбда-выражений Можно легко оперировать над Цепями через C++ лямбды и вот как следует это делать: Chain->Operate([](const FChain::FCursor& Cursor, FMyTrait Trait) { ... }); Тип курсора должен соответствовать типу использованной цепи (твердотельность/текучесть). Обратите внимание, что вам не позволяется получать ссылку на трейт, если вы итерируетесь по не-твердотельной цепи, - разрешено только копирование. Итак, оперировать над твердотельной Цепью вам следует следующим образом: SolidChain->Operate([](const FSolidChain::FCursor& Cursor, FMyTrait& Trait) { ... }); Теперь можете менять свойства (поля) трейта напрямую, без привлечения копирования. Параллельность Твердотельные цепи также поддерживают специальный тип оперирования - мультипоточный. К названию функции, которую надо вызвать, по такому случаю подписали Concurrently, и она принимает ещё два аргумента: максимальное количество потоков, выделенных на выполнение задачи, и минимальное число слотов на каждый поток. Например: SolidChain->OperateConcurrently([](const FSolidChain::FCursor& Cursor, FMyTrait& Trait) { ... }, 4, 32); Второй параметр помогает ограничить количество потоков. Если слишком мало доступных слотов, излишние потоки не понадобятся и они не будут помещены в очередь. ru/toolworks/docs/apparatus/operating.1630527864.txt.gz Последнее изменение: 2021/09/01 23:24 — jispar