std::string

Тема в разделе "LANGS.C", создана пользователем Nafanya, 15 мар 2011.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    второй поток создай и делай в нем, что хочешь...
     
  2. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Попробуйте cin.eof()
     
  3. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Rel
    Да, но это по крайней мере странно, когда к однопоточному параллельному серверу коннектится многопоточный клиент:)
    Не вариант...

    Вводить для неблокируемого ввода-вывода поток, слишком накладно...
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    user это однопоточный параллельный сервер, я понял
     
  5. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Nafanya
    Да уж... А если в тот момент, когда cin решит сделать отложенную запись в string, Ваш код с этой строкой что-то делает?
     
  6. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    green
    флаг unitbuf. When the unitbuf flag is set, the associated buffer is flushed after each insertion operation.

    Для cout этот флаг надо выставлять обязательно, т.к. по умолчанию он не установлен. Без него поведение программы будет отличаться от ожидаемого. Для cin отложенной записи я не наблюдал пока на практике.
     
  7. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Nafanya
    Как Вы вообще допускаете возможность существования такого флага для cin?
    Представьте, что будет
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Nafanya
    Наверное можно секретно перегрузить пару методов... Я делал нечто подобное с FILE из glibc, которому можно подсунуть свои реализации fread и fwrite. Но как такое сделать с cin/cout -- это действительно к знатокам cin и cout.
    green
    Значит не надо ничего делать со строкой, по-крайней мере до тех пор, пока эта запись не будет завершена. Не вижу никаких проблем с этим. Ситуация возникающая постоянно при мультиплексировании ввода/вывода: буфер выделен, операция чтения заказана, но программа пока занимается чем-то другим, поскольку данные ещё не пришли.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    не вариант так программировать, как ты делаешь...
     
  10. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    r90
    А как приложение узнает, что запись в строку завершена?
    Существование режима отложенного ввода из cin невозможно - для этого нужно существенно переработать интерфейс istream.
     
  11. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
  12. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    The message was meaningless.
     
  13. yuran666666

    yuran666666 New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    22
    Определять уровень, а следовательно и участвовать в заездах тоёт-селецт и прочих ладов-калинов. Закажите мне тоже пару пачек парламента.
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    [/DEL]
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    green
    Ну почему же существенно? Можно, например, научить ifstream вызывать наш коллбек при завершении чтения в строку. Знатоки C++ говорят, что он предназначен для повторного использования кода, значит научить fstream плясать по нашему, должно быть несложно и можно обойтись без существенной переработки интерфейсов.
    Или ты о том, что для того чтобы ifstream завершил чтение, нам надо будет подловить момент когда придут данные и вызывать какой-то из его методов? Ну это тоже ведь решаемо. В случае с FILE* я, перехватывал свои же вызовы сиколлов read/write, собирал все отложенные операции в кучку, выполнял select на всех файловых дескрипторах, обрабатывал те файловые дескрипторы, которые были готовы отдать мне (или взять у меня) данные не блокируясь. Но можно обойтись и без перехвата сисколлов. Например, используя ввод/вывод управляемый сигналами или асинхронные api операционной системы, типа aio_read/aio_write.
     
  16. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    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(заход внутрь) в библиотечные функции. Какой опцией этот заход включить? Исходники либы присутствуют.
     
  17. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев