std::shared_ptr
суть моего совета вот в чем.Protocol
становится ресурсом, владение которым разделяется между SensorTask
по прямому владению и Serial
по владению через лямбду.std::weak_ptr
на объект Protocol
. Т.к. ты это все делаешь в конструкторе Protocol
, тебе потребуется связь с порождающим твой объект умным указателем.std::enable_shared_from_this
.Protocol
гарантированно не будет меняться от самого вызова std::make_shared
и до деструктора SensorTask
.Кажется, варианты для меня это удалить пустой конструктор и запретить писать без аргументов
Или делать все в методе Init() который вызывается позже (очень не хочется, ведь для этого есть конструктор)
Protocol
. SensorTask
живет?Protocol
лежит по значению. Его указатель будет стабилен пока живет владеющий им объект SensorTask
.Thread<300>
? Только не говори что это 300 потоков. :) hardware_concurrency
, стоит задавать не больше достаточного количества потоков в пуле, аффинировав[W][L] каждый поток конкретному ядру процессора, чтобы они не скакали, чтобы на ядрах не было переключения контекстов.recv
и send
ты проверяешь ведь по всем правилам?Откуда вдруг взялась "минимальная допустимость"
противоречит "минимальной допустимости"
Однако, в основном так делают мульимедийные и игровые движки.
Например, у UE4 это будет
extern int32 GuardedMain( const TCHAR* CmdLine )
- внешняя точка входа для проекта, которая вызывается из недр UE, из точки входа конкретной ОС. Если у тебя есть доступ к репозиториям эпиков, то ты можешь это проверить. Скажем, в файлеLaunchWindows.cpp
.WinMain
находится именно в этом файле.По некоторым другим движкам я не могу выдавать информацию в связи с NDA. Могу только сказать что UE4 такой далеко не один.