Evgenii
хотя там куча крутых людей сидит как я понял
Stanislav
по старинке на емейлы писать
Constantine
Слава, результат был отрицательным?
Constantine
На попытку два указателя -> сброс?
Berkus
Anonymous
Все "крутые чуваки" имеют как минимум электронную почту. Лучше всего именно через email и обращаться.
✙ Azrael
/stat@combot
Anonymous
Я например принципиально не стану решать вопросы в чатиках. Только email и с подписью ЭЦП.
Berkus
Anonymous
ишь ты какой принципиальный
Ага. В чатике твой собеседник потом скажет: "Ничего я не помню, о чём мы с тобой договаривались". А в случае email всё здесь, с подписями и служебными заголовками. От своих слов отказаться уже не выйдет.
Berkus
ну это... такой... дикарский подход несколько
Berkus
ничем не отличается от "по емейлу ничего не докажешь, а вот на бумаге с гербовой печатью - вот оно всё"
Anonymous
Поэтому у нас вся переписка либо ведётся через email, либо в баг-трекере. Всё остальное - просто общение.
Anonymous
Berkus
а, ну если все вопросы через суд решать тогда конечно
Berkus
рекомендую гербовую печать
Berkus
таким людям неплохо указывать на возможность поискать работу где-то ещё
Berkus
сфера большая, где-то и такие пригодятся
Evgenii
кроме того в чатике другие люди могут ответить
Anonymous
Anonymous
У нас в Fedora Project именно в списках рассылки решаются вопросы. Письма также должны быть подписаны GPG.
Berkus
воу воу
Anonymous
Berkus
список рассылки это отлично... просто прекрасно. а за оверквотинг вы там что делаете?
Evgenii
Berkus
или почтовый тред 40 уровневой вложенности это норма?
Anonymous
Evgenii
Anonymous
Anonymous
Berkus
IRC? то есть логи чатов еще и отдельно хранить
Berkus
божечки
Дмитрий
Есть рабочие IRC чаты ?
Berkus
я могу только сказать - УДОБНО, ОЧЕНЬ УДОБНО
Дмитрий
Ок, спасибо!
Nikita
Для этого следует согласовать время аудио-видеоконференции
Через email
Evgenii
Evgenii
перешли б на гитхаб+гиттер например, как бы было удобно
Stanislav
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/4wOU-1_3D0A/lVkUWPgpAQAJ
🐙 Antony
я тут вообще зашиваюсь, так что сейчас поспрашиваю соседей, может кто захочет поревьюить
🐙 Antony
не принимать :(
Roman
не опасно ли хранить shared_ptr на самого себя в самом себе?
class Something {
protected:
std::shared_ptr<Something> _me;
public:
Something() : _me(this) {}
}
vladislav
блин, жесть
vladislav
а можно нескромный вопрос: зачем тебе это?
Roman
а можно нескромный вопрос: зачем тебе это?
примитив может оборачиваться в Wrapper класс, который передаётся JavaScript движку. За врапер отвечает сборщик мусора JS, за сам примитив отвечаю я.
враперу я передаю shared_ptr на примитив чтоб если того удалил gc - он удалил примитив, если тот ещё существует.
внутри примитива держу shared_ptr на него же чтобы при желании сказать terminate(), сбавить ref count, но не удалиться, если ещё есть враперы
Vladislav
vladislav
вроде похоже на твой кейс
https://stackoverflow.com/questions/11711034/stdshared-ptr-of-this
Vladislav
Roman
Так ведь враппер уже держит shared_ptr на примитив, пусть просто отпускает его и все
если garbage collector удалит врапер, то тот может потянуть за собой сам примитив, НО этого произойти не должно, потому-что примитив представляет собой асинхронную операцию, которая сама решает когда она готова к удалению (внутри она вызывает die() по завершению, это должно декрементировать reference counter, но удалить только если на примитив нет ссылок)
Vladislav
Vladislav
Vladislav
Я как-то писал класс-камикадзе с delete this, из-за кривого дизайна внешней библиотеки
Roman
просто на данный момент у меня SEGFAULT, и я не совсем уверен где именно, но подозревеаю что это из-за shared_ptr на себя-же
Vladislav
Хм
Roman
возможно shared_ptr<T> (this) опасно?
Vladislav
Погони с асаном
Vladislav
Vladislav
Разве что race condition где-то
Vladislav
shared_ptr сам по себе не thread safe
Roman
а если стрим не нужен? мы вызовем деструктор, который вызовет деструктор _me, который вызовет delete для this тобишь два раза деструктор для стрима разве не?
Vladislav
Anonymous
.....
Constantine
Да, вопрос: в определенной версии МС компилятора была "фича", что если класс не имеет полей, деструктор не вызывается. Это была бага или какая-то "фича" стандарта?
Anonymous
всем привет
Constantine
Vladislav
Roman
Roman
надо написать небольшой тест кейс
Vladislav
Наоборот (если объект не удаляется явно через delete и не выделяется на стоке)
Constantine
template <typename TArgument>
inline DWORD WINAPI run_thread__start_routine(LPVOID lpParam)
{
std::unique_ptr<run_thread__start_routine__param_type<TArgument>> param(
(run_thread__start_routine__param_type<TArgument> *)lpParam
);
std::shared_ptr<TArgument> argument = std::atomic_load(&param->m_argument);
param->m_lpRoutine(argument);
return 0;
};
template <typename TArgument, typename TEngine>
inline void run_thread(void(*lpRoutine)(std::shared_ptr<TArgument>), std::shared_ptr<TArgument> argument, TEngine &engine)
{
run_thread__start_routine__param_type<TArgument> *param = new run_thread__start_routine__param_type<TArgument>();
param->m_lpRoutine = lpRoutine;
std::atomic_store(&param->m_argument, argument);
engine.Run(&run_thread__start_routine<TArgument>, (LPVOID)param);
};
это жи правильный код запуска треда? :)
Constantine
и да, меня не волнует вопрос, что будет, если поток будет плеваться исключениями и что engine может запустить winapi thread, не инициализировав правильно C++ runtime