std::string

Discussion in 'LANGS.C' started by Nafanya, Mar 15, 2011.

  1. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    второй поток создай и делай в нем, что хочешь...
     
  2. KeSqueer

    KeSqueer Сергей

    Blog Posts:
    0
    Joined:
    Jul 19, 2007
    Messages:
    1,183
    Location:
    Москва
    Попробуйте cin.eof()
     
  3. Nafanya

    Nafanya Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    581
    Rel
    Да, но это по крайней мере странно, когда к однопоточному параллельному серверу коннектится многопоточный клиент:)
    Не вариант...

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

    KeSqueer Сергей

    Blog Posts:
    0
    Joined:
    Jul 19, 2007
    Messages:
    1,183
    Location:
    Москва
    user это однопоточный параллельный сервер, я понял
     
  5. green

    green New Member

    Blog Posts:
    0
    Joined:
    Jul 15, 2003
    Messages:
    1,217
    Location:
    Ukraine
    Nafanya
    Да уж... А если в тот момент, когда cin решит сделать отложенную запись в string, Ваш код с этой строкой что-то делает?
     
  6. Nafanya

    Nafanya Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Jul 15, 2003
    Messages:
    1,217
    Location:
    Ukraine
    Nafanya
    Как Вы вообще допускаете возможность существования такого флага для cin?
    Представьте, что будет
     
  8. r90

    r90 New Member

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

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    не вариант так программировать, как ты делаешь...
     
  10. green

    green New Member

    Blog Posts:
    0
    Joined:
    Jul 15, 2003
    Messages:
    1,217
    Location:
    Ukraine
    r90
    А как приложение узнает, что запись в строку завершена?
    Существование режима отложенного ввода из cin невозможно - для этого нужно существенно переработать интерфейс istream.
     
  11. Nafanya

    Nafanya Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    581
  12. Nafanya

    Nafanya Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    581
    The message was meaningless.
     
  13. yuran666666

    yuran666666 New Member

    Blog Posts:
    0
    Joined:
    Aug 11, 2009
    Messages:
    22
    Определять уровень, а следовательно и участвовать в заездах тоёт-селецт и прочих ладов-калинов. Закажите мне тоже пару пачек парламента.
     
  14. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    [/DEL]
     
  15. r90

    r90 New Member

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

    Nafanya Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    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 Андрей

    Blog Posts:
    0
    Joined:
    Oct 16, 2006
    Messages:
    1,327
    Location:
    Ржев