Rel Да, но это по крайней мере странно, когда к однопоточному параллельному серверу коннектится многопоточный клиент Не вариант... Вводить для неблокируемого ввода-вывода поток, слишком накладно...
Nafanya Да уж... А если в тот момент, когда cin решит сделать отложенную запись в string, Ваш код с этой строкой что-то делает?
green флаг unitbuf. When the unitbuf flag is set, the associated buffer is flushed after each insertion operation. Для cout этот флаг надо выставлять обязательно, т.к. по умолчанию он не установлен. Без него поведение программы будет отличаться от ожидаемого. Для cin отложенной записи я не наблюдал пока на практике.
Nafanya Как Вы вообще допускаете возможность существования такого флага для cin? Представьте, что будет
Nafanya Наверное можно секретно перегрузить пару методов... Я делал нечто подобное с FILE из glibc, которому можно подсунуть свои реализации fread и fwrite. Но как такое сделать с cin/cout -- это действительно к знатокам cin и cout. green Значит не надо ничего делать со строкой, по-крайней мере до тех пор, пока эта запись не будет завершена. Не вижу никаких проблем с этим. Ситуация возникающая постоянно при мультиплексировании ввода/вывода: буфер выделен, операция чтения заказана, но программа пока занимается чем-то другим, поскольку данные ещё не пришли.
r90 А как приложение узнает, что запись в строку завершена? Существование режима отложенного ввода из cin невозможно - для этого нужно существенно переработать интерфейс istream.
Определять уровень, а следовательно и участвовать в заездах тоёт-селецт и прочих ладов-калинов. Закажите мне тоже пару пачек парламента.
green Ну почему же существенно? Можно, например, научить ifstream вызывать наш коллбек при завершении чтения в строку. Знатоки C++ говорят, что он предназначен для повторного использования кода, значит научить fstream плясать по нашему, должно быть несложно и можно обойтись без существенной переработки интерфейсов. Или ты о том, что для того чтобы ifstream завершил чтение, нам надо будет подловить момент когда придут данные и вызывать какой-то из его методов? Ну это тоже ведь решаемо. В случае с FILE* я, перехватывал свои же вызовы сиколлов read/write, собирал все отложенные операции в кучку, выполнял select на всех файловых дескрипторах, обрабатывал те файловые дескрипторы, которые были готовы отдать мне (или взять у меня) данные не блокируясь. Но можно обойтись и без перехвата сисколлов. Например, используя ввод/вывод управляемый сигналами или асинхронные api операционной системы, типа aio_read/aio_write.
Please help me with one thing. How in KDevelop step into the function from the shared library (printf for example)? What option in KDevelop is responsable for it? I spend a lot of time, but don't find such option. Other situation: I copy any library to standart library directory in Linux. In programm I use this library. When I Press F9, KDevelop begin debugging and stop at breakpoint. But he don't want to step into functions from that library. I informed KDevelop about my library binary file (-lanylibrary option) and library sources (-I /usr/lib/anylibrary option), but after successful compilation KDevelop don't want to step into functions from library. How can I resolve this problem? I need to step into library functions. Та же проблема по русски: KDevelop во время отладки не хочет делать step into(заход внутрь) в библиотечные функции. Какой опцией этот заход включить? Исходники либы присутствуют.