[offtiopic]
Пошёл Илья Муромец со Змеем Горынычем рубиться, не на жизнь а на смерть. Бьются они, сражаются, срубает Илюша Змею голову - вместо неё две прирастают, срубает две - четыре тут как тут!... День рубятся, ночь, всю неделю мечом Илюша машет, Змей огнём пышет, устал уж богатырь... Из последних сил Илья Муромец отрубает Змею Горынычу 255-ю голову -- и умирает тварь поганая!...
...ибо был Змей 8-битным.
[/offtiopic]
В процессе перевода нашей системы АСУ ТП на службу PPS вдруг, без предупреждения, вылезла нехорошая бяка: когда количество
subscriber-ов на один PPS-объект становится большим, что-то в районе от 200 до 300
, при попытке обновления атрибута в таком объекте вся служба PPS вываливается в coredump. Что-то мне подсказывает, что число это близко к 256
.
Времени более подробно разбираться у меня не было, я просто переписал кусок программы так чтобы на PPS-объекты процесс подписывался только на время своего "активного" состояния. Будем надеяться, что у нас не будет более 255 одновременно активных сущностей. Но, сами понимаете, это грязный workaround. В рабочую неделю я постараюсь на "лабораторном" компе воспроизвести ситуацию и разобраться более подробно.
Оно, как бы, в принципе, вполне ожидаемо, что какие-то ограничения у программ всегда есть. "640 килобайт хватит для всех!" © БГ. И, например, максимальный размер объекта PPS - 64 кБ - чётко прописан в документации. А вот количество подписчиков, ну или вообще количество процессов одновременно открывающих объект - нигде не упомянуто. Если бы оно было, можно было бы изначально при проектировании программы эти ограничения учитывать, а так тычешься в темноте.
Так что, господа/панове пользователи службы PPS в своих программах - учитывайте сей эмпирически установленный факт. А разработчикам QNX - пожелание: вы бы в XXI веке могли бы воспользоваться преимуществами 32-битной архитектуры, или хотя бы упоминайте свои 8-битные ограничения в документации!