- *говно *programmingЯ иногда пишу такой херовый код, что слов нет.
Передать указатель на объект в другой тред, не позаботившись, чтобы объект был жив до конца его обработки в том треде. Да, я еще ни разу не напарывался на проявление этого бага (и никто не напарывался, похоже, и не напорется), но, блеать, это же ужас.
Руки мне отрывать.from Azoth_primary, 4 months ago
Replies (71)
- @Crazy-Owl:>в другой тред
Из одного дедфудотреда в другой дедфудотред?from 29842804831302329790995360, 4 months ago - @lockie:Я тоже на такое напарывался. Какбэ многопоточный кодинг — штука мозгосрывная, так что окfrom ХОЛОДИЛЬНИКА, 4 months ago
- @0xd34df00d:@lockie Ну не оправдание же. Тупая ошибка совершенно. Еще и не факт, что у меня объект reentrant.from Azoth_primary, 4 months ago, in reply to /4
- @0xd34df00d:@0xd34df00d ...и thread-safe. Хотя, те методы, что я дергаю, тривиальны и вообще.from Azoth_primary, 4 months ago, in reply to /6
- @Crazy-Owl:@lockie многопоточный кодинг на говнокрестах, ты уточняй, пожалуйста.from 29842804831302329790995360, 4 months ago, in reply to /4
- @lockie:А вот узнать, что у потомков QThread слоты зовутся в том треде, откуда их зовут, а не в самом треде, с нокия-форума путём долгого гугления, а не из документации — за такое надо в еблище, даfrom ХОЛОДИЛЬНИКА, 4 months ago
- @0xd34df00d:@lockie Што. Qt::QueuedConnection в connect спасет отца русской демократии.from Azoth_primary, 4 months ago, in reply to /9
- @Crazy-Owl:@lockie ну почему, в ирлонге, например, нормальная многопоточность. В clojure тоже. Хотя да, я лиспоеб.from 29842804831302329790995360, 4 months ago, in reply to /10
- @lockie:@0xd34df00d Хуй там. У потомков QThread вообще слотов не должно быть.from ХОЛОДИЛЬНИКА, 4 months ago, in reply to /11
- @hagane:@Crazy-Owl Сравнил языки программирования с плюсами, ха.from tkabber, 4 months ago, in reply to /12
- @0xd34df00d:from Azoth_primary, 4 months ago, in reply to /13
- @0xd34df00d:@Crazy-Owl А я левЪ, и что?
Олсо, не прав. Плюсы — самый няшнэ и вздрыжнэ язык погромирования.from Azoth_primary, 4 months ago, in reply to /19 - @Crazy-Owl:@0xd34df00d дедфуд, иногда мне кажется что ты псих напрочь.from 29842804831302329790995360, 4 months ago, in reply to /20
- @lockie:@0xd34df00d Ну тык, там у тебя сигналы у QThread. Сигналы можно, слоты нельзяfrom ХОЛОДИЛЬНИКА, 4 months ago, in reply to /18
- @0xd34df00d:@lockie Схуя?
Олсо. там и сигналов нету.from Azoth_primary, 4 months ago, in reply to /23 - @Crazy-Owl:@0xd34df00d да потому, что плюсы — самый ужасный язык, когда-либо созданный человеком (и то, я не уверен, что СтраусТруп — человек).from 29842804831302329790995360, 4 months ago, in reply to /22
- @lockie:@0xd34df00d Пушто зваться эти слоты будут в том треде, где испущен сигнал. Алсо, Core::gotOurAccounts(const QStringList&) — это штоа?from ХОЛОДИЛЬНИКА, 4 months ago, in reply to /24
- @0xd34df00d:@lockie Кто тебе такой бред сказал? С Qt::QueuedConnection они гарантированно зваться будут в треде назначения, с Qt::AutoConnection есть пара тонкостей.from Azoth_primary, 4 months ago, in reply to /26
- @lockie:@Crazy-Owl А что лучще? (из императивщины, я имею в виду, про функциональщину ты сразу скажещт про БОЖЕСТВЕННЫЙ ЛИСП)from ХОЛОДИЛЬНИКА, 4 months ago, in reply to /25
- @0xd34df00d:@Crazy-Owl Ты просто не видишь всей красоты в этих няшных шаблонных костылях.from Azoth_primary, 4 months ago, in reply to /25
- @Crazy-Owl:@lockie лисп не совсем функциональный, тащемта. А очень даже императивный.from 29842804831302329790995360, 4 months ago, in reply to /28
- @lockie:@0xd34df00d Я его на своей шкуре испытал. Слоты зовутся в том треде, где создан объект с этими слотами. Потомки QThread хоть и представляют собой поток, но сами инстансы этих объектов создаются в родительском треде, поэтому и их слоты зовутся в родительском. 14/88!from ХОЛОДИЛЬНИКА, 4 months ago, in reply to /27
- @0xd34df00d:@lockie А где ты создаешь объекты? В run или где?from Azoth_primary, 4 months ago, in reply to /34
- @lockie:@0xd34df00d Какие объекты? Треды? Ну где-то конструирую. Если создавать в run() у QThread-а объекты, то у них со слотами будет всё ок, это-то понятно.from ХОЛОДИЛЬНИКА, 4 months ago, in reply to /36
- @Crazy-Owl:@0xd34df00d узнаю дедфудотредfrom 29842804831302329790995360, 4 months ago, in reply to /38
- @0xd34df00d:@lockie А зачем ты создаешь объекты в конструкторе (и вообще не-run) треда? QThread не представляет собой объект, QThread представляет собой обертку над птредами. Представлять тред объектом — дырявая абстракция.from Azoth_primary, 4 months ago, in reply to /39
- @Crazy-Owl:@lockie lawl. Язык без сборки мусора нужен ровно один — C (это если не считать асма). Больше — уже излишества и не нужно.from 29842804831302329790995360, 4 months ago, in reply to /42
- @0xd34df00d:@hagane % eix -c boehm
[I] dev-libs/boehm-gc (7.2_alpha4-r1@06.03.2011): The Boehm-Demers-Weiser conservative garbage collectorfrom Azoth_primary, 4 months ago, in reply to /44 - @lockie:@Crazy-Owl Сборщик мусора нужен только тем, кто генерирует не рабочий код, а мусор.from ХОЛОДИЛЬНИКА, 4 months ago, in reply to /43
- @0xd34df00d:@lockie Да все там нормально, создавай объекты в run.from Azoth_primary, 4 months ago, in reply to /45
- @Crazy-Owl:@lockie ололо, привязался к слову, ты смотри-ка. Бугурт плюсоеба?from 29842804831302329790995360, 4 months ago, in reply to /49
- @0xd34df00d:@lockie Таки нет, нормальный сборщик мусора нужен для нормальных лямбд с доступом к родительскому скоупу.from Azoth_primary, 4 months ago, in reply to /49
- @Crazy-Owl:@0xd34df00d отнюдь, я лисп и хаскель люблю.from 29842804831302329790995360, 4 months ago, in reply to /47
- @Crazy-Owl:@0xd34df00d Да у тебя же ПРОБЛЕМА ФУНАРГА!from 29842804831302329790995360, 4 months ago, in reply to /52
- @0xd34df00d:@lockie Я не помню этот ебнутый синтаксис C++0x-лямбд, но анонимные функции, например. Хотя это вроде не очень корректно.from Azoth_primary, 4 months ago, in reply to /54
- @Crazy-Owl:from 29842804831302329790995360, 4 months ago, in reply to /58
- @0xd34df00d:@Crazy-Owl А, ну да. Не знал, что оно так называется.from Azoth_primary, 4 months ago, in reply to /61
- @DZhon:возможно стоит передавать право владения вместе в передачей в поток (использовать move семантику).from web, 4 months ago
- @0xd34df00d:@DZhon Не в этом случае. В плагин попадает объект, отвечающий за сообщение, и нельзя его в хранилку истории передать, очевидно.from Azoth_primary, 4 months ago, in reply to /64
- @DZhon:@0xd34df00d Тогда всеми нелюбимый подсчет ссылок или простая внимательность, да.from web, 4 months ago, in reply to /65
- @0xd34df00d:@DZhon В данном конкретном случае лучше собрать все нужные данные от объекта (его не нужно модифицировать) в родительском потоке и передать их в тред.from Azoth_primary, 4 months ago, in reply to /66
- @0xd34df00d:@jtootf ХЗ, я не юзал. Но как формальный контраргумент к «а чо ж не запилили» катит.
Кстати, его вроде inkscape использует, ЕМНИП, А инкскейп вроде даже годно работает.from Azoth_primary, 4 months ago, in reply to /70