Size: a a a

2020 July 31

AF

Aidar Fattakhov in supapro.cxx
Работают только с ручными гарантиями того что ничего не переживет
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
detach же как то работают
Сырые указатели тоже как-то работают, ключевое тут "как-то"
источник

ПК

Побитый Кирпич... in supapro.cxx
Aidar Fattakhov
Работают только с ручными гарантиями того что ничего не переживет
Ну дак я про это и говорю. Локальные переменные в detach потоке могут продолжать юзаться, ссылки извне, если он не shared не могут
источник

AF

Aidar Fattakhov in supapro.cxx
shared тоже не могут, непоянтно почему должны мочь
источник

ПК

Побитый Кирпич... in supapro.cxx
Aidar Fattakhov
shared тоже не могут, непоянтно почему должны мочь
Потому что объекты живы
источник

AF

Aidar Fattakhov in supapro.cxx
а куча жива?
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
Ну дак я про это и говорю. Локальные переменные в detach потоке могут продолжать юзаться, ссылки извне, если он не shared не могут
Это путь граблей, для нормальной работы этот поток все равно надо будет джойнть из мейна путем всяких атомик флажков и прочего
источник

DP

Denis Paukaev in supapro.cxx
Условие мейн поток умирает последним очень плохо дружит с детач схемами любыми
источник

DP

Denis Paukaev in supapro.cxx
Такое бывает я не спорю, но это скорее исключение, по умолчанию нужно просто использовать join и все )
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
Такое бывает я не спорю, но это скорее исключение, по умолчанию нужно просто использовать join и все )
Дак и join тебя не спасает
источник

ПК

Побитый Кирпич... in supapro.cxx
потому что объекты дохнут до него
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
потому что объекты дохнут до него
Это разные проблемы
источник

ПК

Побитый Кирпич... in supapro.cxx
join в конце main-а или после main-а в деструкторах глобальных переменных это почти то же самое в данном случае что и detach
источник

DP

Denis Paukaev in supapro.cxx
Я не говорю что join решает проблему лайфтаймов например
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
join в конце main-а или после main-а в деструкторах глобальных переменных это почти то же самое в данном случае что и detach
Почти да не почти, это нормальный явный контракт вместо ой, а у нас поток иногда успевает завершиться до мейн а иногда нет
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
Почти да не почти, это нормальный явный контракт вместо ой, а у нас поток иногда успевает завершиться до мейн а иногда нет
Я тут в основном про проблему лайфтаймов тёр, так что для меня это одно и то же
источник

ПК

Побитый Кирпич... in supapro.cxx
Когда придут корутины, код который в обычном режиме (линейный) юзал передачу по ссылкам теперь почти без изменений (пара co_await добавилась) станет асинхронным и ссылки шарить уже нельзя будет
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
Когда придут корутины, код который в обычном режиме (линейный) юзал передачу по ссылкам теперь почти без изменений (пара co_await добавилась) станет асинхронным и ссылки шарить уже нельзя будет
Почему ?) Корутины это просто юзермод абстракция над обычными потоками, если понимать как это работает, то код можно писать практически так же
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
Я тут в основном про проблему лайфтаймов тёр, так что для меня это одно и то же
Для меня это две разные проблемы, но детач хуже в виду более неявных спецэффектов
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
Почему ?) Корутины это просто юзермод абстракция над обычными потоками, если понимать как это работает, то код можно писать практически так же
корутины  выглядят как синхронные функции, но на самом деле асинхронные. Асинхронность + лайфтайм модель С++ = высокий шанс отстрела ноги. В С#, Откуда пришли текущие корутины таких проблем нет, потому что там модель лайфтайма как-будто все переменные это std::shared_ptr
источник