Pull to refresh
3
0
Павел @paxlt

Программист С/C++

Send message

Спасибо за статью. У вас проблема в 130-ой строчке кода сервера. Нельзя вызывать IsCanceled() для асинхронного режима взаимодействия. Поэтому пример падает.

Можно вызывать только после получения тэга AsyncNotifyWhenDone из cq

IsCancelled is always safe to call when using sync or callback API. When
using async API, it is only safe to call IsCancelled after the
AsyncNotifyWhenDone tag has been delivered. Thread-safe.

if(ctx_.IsCancelled() || mcounter >= greeting.size())

...

Коллеги всем спасибо за коментарии. Вижу, что тема оказалась интересна. Замечу, что тест не претендует на звание всеобъемлющего критерия сравнения ОСРВ.

По поводу чрезмерной загрузки системы при смене значения системного тика на QNX. Да нагрузка возросла, но на удивление, не всё так плохо.

Общая загрузка системы: 8.2%, ядро: 0.3%, сам тест: 1.4%

Действительно не рекомендуется менять тик ниже 1 мс. Но мне было интересно поработать на временном интервале 500 мкс, а такого значения при тике 1 мс не получить. Опытным путём выяснилось, что погрешность перепланирования для QNX в этом тесте находится в рамках одного тика. Поэтому был выбран минимальный.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity