Sergey
Или по любому нужно выделять поток для каждого процесса на обслуживание IO?
Andrei
Есть платформозависимое асинхронное IO в консоль.
Andrei
Как это делать без асинхронщины — не очень понятно.
Deleted Account
я хочу в сипипи чтобы можно было роботать с шелом ОС
Andrei
select можно делать наверное из STDIN
Matway
Есть платформозависимое асинхронное IO в консоль.
На самом деле нет. На винде точно нет асинхронной работы с консолью.
Nikolai
Sergey
@AndreiKr мне не интересны системные платформозависимые вызовы. Меня интересуют возможности boost::process
Matway
Самая печальская печаль для всех вин юзеров
Увы. На винде вообще по-уродски сделана консоль. Для неё запускается отдельный процесс, с которым приходится коммуницировать методами ReadConsole/WriteConsole. Можно через ReadFile/WriteFile, но асинхронные режимы при этом не работают, потому что на самом деле эти методы служат просто обёрткой к тем же ReadConsole/WriteConsole.
Matway
А разве ты что-то с APC не придумал?
Нет, вся асинхронщина не работает для консольных буферов.
Sergey
А boost::process вообще часть boost-а?
скоро будет, как я понимаю. С 1.64
🐙 Antony
🦥Alex Fails
На самом деле нет. На винде точно нет асинхронной работы с консолью.
а разве через OVERLAPPED нельзя работать с HANDLE'ами стдина/аута/етц?
Sergey
Ещё один момент. Разве здесь не должен возвращаться const указатель? Или отсутствовать модификатор const... https://github.com/klemens-morgenstern/boost-process/blob/develop/include/boost/process/pipe.hpp#L265
Sergey
А что не так с async_pipe?
Не хочу для пачки процессов городить пачку io_context и потоков. Как я понимаю один процесс обслуживает 1 поток. Может не прав, ещё не трогал
Andrei
Если кроссплатформа с учетом винды, то судя по всему придётся.
Evgenii
Короче имхо лучше пропихивать в компиляторы/стандарт фичи чем пилить свой язык
Matway
а разве через OVERLAPPED нельзя работать с HANDLE'ами стдина/аута/етц?
Увы. Самое близкое, что можно сделать - на этих хэндлах можно ждать/поллить методами WaitFor*/MsgWaitFor*. Что я, собственно, и делал для "асинхронной" консоли. Отдельный поток плюс ожидание на всех хэндлах, которые нельзя OVERLAPPED.
🦥Alex Fails
очень интересная инфа, спасибо. запишу в телеграф-заметки #windows #console #async #io
Evgenii
к тому же у нас есть возможность 😂
В компилятор интереснее)
rostislav
а народ из варгейминга тут бывает?
Sergey
Не должен. Метод точно const. А указатель не const, потому что underflow очевидным образом двигает указатели.
А каким образом я могу получить этот указатель, имя ссылку на этот объект на руках?
Andrei
rdbuf возвращает указатель на буффер.
Andrei
У буффера есть методы underflow и overflow, которые инкапсулируют логику по записи и чтения из\в ресурс ассоциированный с этим буфером.
Evgenii
Релиз системы сборки CMake 3.8 Состоялся релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.8, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.
Sergey
Не понял вопроса.
https://pastebin.com/DhyL3HD4
Andrei
Они внутри себя как правило всегда вызывают setg
Andrei
setp
Andrei
Которые явно не константные.
Andrei
https://pastebin.com/DhyL3HD4
Какая-то фигня, я отчетливо вижу, что _buf неконстантный.
Andrei
253 строчка
Sergey
Которые явно не константные.
Я наверно где то косячу) не могу понять, почему я не могу вызвать этот метод
Крылатый
А вот вам ещё мегабыстрый логгер https://github.com/RafaGago/mini-async-log
Andrei
Сразу видно код, который даже не пытаются компилировать после изменений.
Sergey
Сразу видно код, который даже не пытаются компилировать после изменений.
а ну да, я даже и не заметил в ошибке, что там каст от указателя
cyber
а его что, нужно еще компилировать?
Andrei
Вот вам и boost::process, и кто после этого скажет, что велосипеды не нужны :D
cyber
у вас не всегда с первого раза все получается7
Sergey
блин, а я думал быть может это мне поможет проверить буфер стрима на наличие данных
Evgenii
Или уже приняли
Andrei
Сам только что спрашивал тремя постами выше.
Sergey
Или уже приняли
во второй бетте 1.64 версии есть
Andrei
блин, а я думал быть может это мне поможет проверить буфер стрима на наличие данных
Бери код с master-а, у них же написано в readme даже, что девелоп не собирается.
🐙 Antony
а ну да, я даже и не заметил в ошибке, что там каст от указателя
Нашел ошибку - молчи ни кому не говори, автору библиотеки не намекай! Ты старался, работал и искал - другие люди тоже должны страдать. Бонусом получишь весёлое занятие по накладыванию своих фиксов при переезде на след релиз библиотеки. </sarcasm>
Evgenii
Ну в любом случае пилят его уже кучу времени и брать не хотели долго, видимо не просто так
Sergey
Бери код с master-а, у них же написано в readme даже, что девелоп не собирается.
я не с репозитория брал)) вместе со второй беттой буста установил)
Evgenii
Ну в любом случае пилят его уже кучу времени и брать не хотели долго, видимо не просто так
Надеюсь что когда оно в стейбл версию попадет наконец, её быстренько допилят
🐙 Antony
Andrei
Сразу пулреквест.
Andrei
Амперсанд забыл кто-то по-моему.
Sergey
Нее, я только issue сделаю. Мне помимо всего прочего нужно описать другие проблемы и вопросы, которые возникли при работе. Если кто то хочет PR сделать с отсутствующим амперсантом - welcome.
rostislav
desu, [12.04.17 14:49] привет desu, [12.04.17 14:50] кто работал с камерой usb с помощью qt desu, [12.04.17 14:52] для cvcapture есть установка исо? desu, [12.04.17 14:53] я вижу только iso speed desu, [12.04.17 14:53] и установка AWB
Daniil
a iso speed != iso ?
rostislav
Чем iso speed плох?)
ну это может не то что просто исо)
rostislav
std::memcpy((uchar*)sourse_3c,(uchar*)cvQueryFrame( dlg->capture )->imageData,dlg->nHeight*dlg->nWidth*3);
rostislav
что-то мне кажется я какуюто глупость написал
rostislav
как вы думаете)
rostislav
чета подтормаживает
rostislav
для распикам сразу было в буфер хм
Tengiz
Привет всем, вопрос про SFINAE. Как обычно есть функция поведение которой зависит от свойств типов передаваемых параметров (наличие/отсутсвие некоторых методов, арифметрический ли это тип, и т.д.) сейчас пачка специализаций через enable_if template<typename T> typename enable_if_t<has_method_foo<T>::value, bool> doSomething(T t) template<typename T> typename enable_if_t<has_method_bar<T>::value, bool> doSomething(T t) и т.д. Вопрос как добавить поведение по-умолчанию?, т.е. если другие enable_if не специализировали функцию, то использовать эту реализацию Я знаю что это можно делать через тот же enable_if, но с исключающими условиями: template<typename T> typename enable_if_t<!has_method_bar<T>::value && !has_method_foo<T>::value, bool> doSomething(T t) { doDefault(t); } Такой способ подходит, до тех пор пока специализаций мало. Существует ли более удобный способ использовать SFINAE, где можно было бы удобно указать реализацию по-умолчанию?