@ProCxx

Страница 1017 из 2477
Roman
27.06.2017
11:53:14
понял, короче нужно написать некую обёрткну чтоб можно было просто: Checkpoint cp1; cp1.resolve(); cp1.await();

Berkus
27.06.2017
11:53:20
хмм, поясни плиз
в частности std::future не cancellable

Roman
27.06.2017
11:54:47
в частности std::future не cancellable
это кстати та причина по которой я работаю над https://qbeon.github.io/QuickStreams/ эта парадигма мощнее Callback'ов, Promise'ов и Future'ов и даже Rx подхода, но я разработал QS специально для Qt, не std cpp

пишу вот автотесты для неё (библиотеки), но асинхронных функциональных тестов видимо пишут не много поэтому опять приходится изобретать

Google
Aragaer
27.06.2017
12:03:08
o/

Совершенно случайно - кто-нибудь может помочь с запуском pvs studio?

Aragaer
27.06.2017
12:03:52
не помогает

Alexander
27.06.2017
12:03:57
под виндой элементарно - плагин в студию и вперёд

Aragaer
27.06.2017
12:04:09
линукс

Alexander
27.06.2017
12:04:22
под линем - чуть больше мороки, но тоже заводится. По карйней мере, когда я пробовал, то у меня заводилось

заводил на проекте с cmake

Aragaer
27.06.2017
12:04:35
ну вот у меня почему-то не заводится

No compilation units found

Alexander
27.06.2017
12:04:48
Aragaer
27.06.2017
12:04:53
не, не cmake

Alexander
27.06.2017
12:04:58
No compilation units found
cmake проверь свой

Google
Aragaer
27.06.2017
12:05:00
да, кросс-компилятор

не cmake, просто make

Alexander
27.06.2017
12:05:17
ну под этим я не заводил

Aragaer
27.06.2017
12:05:21
кросс-компилятор, но я вроде бы его указал

$ pvs-studio-analyzer analyze -o pvs.log -C sparc-rtems-g++ -C g++ -C sparc-rtems-gcc -C gcc No compilation units found Analysis finished in 0:00:00.00

пробовал сгенерить compile_commands.json - аналогично, не ест

Alexander
27.06.2017
12:06:32
а что он такой командой должен анализировать?

откуда ему input приходит? или это в make пишешь внутри?

Aragaer
27.06.2017
12:07:21
сначала вызывал trace. Он создал strace_out

потом вызываю analyze - он должен это самый strace_out подцепить

но даже если явно укажу -f strace_out результат тот же

Berkus
27.06.2017
12:07:54
strace? wat

Alexander
27.06.2017
12:07:56
написано где-нибудь, что он его сам подцепить должен?

Aragaer
27.06.2017
12:08:01
да

-f FILE, --file FILE (default: 'compile_commands.json', 'strace_out') Use trace output or compile commands database FILE.

Alexander
27.06.2017
12:08:56
и сам файл этот нормально генерируется?

я просто хз, что там внутри этого файла может находиться

Aragaer
27.06.2017
12:09:17
да, нормально генерируется

Alexander
27.06.2017
12:10:14
да, нормально генерируется
значит пиши в саппорт, если всё правильно делаешь

Aragaer
27.06.2017
12:10:28
попробую

Google
Mikhail
27.06.2017
12:16:47
что такое noexcept квалификатор в двух словах?

Roman
27.06.2017
12:17:00
so how about that? test() { Checkpoint cpMain(1000); Checkpoint cpAttached(1000); Checkpoint cpFailure(1000); streams.create([]{ // this stream must be awoken! cpMain() }) .attach([]{ // this stream must be awoken! cpAttached() }) .failure([]{ // this stream shall never be awoken! cpFailure() }); // await cpMain and cpAttached to be unlocked // if those time out - test fails cpMain.must() cpAttached.must() // await cpFailure to time out // because it's not exepected to be reached // if it's unlocked - test fails cpFailure.mustNot() EXPECT_FALSE(cpMain.failed()) EXPECT_FALSE(cpAttached.failed()) EXPECT_FALSE(cpFailure.failed()) } Checkpoint как примитив блокиратор плюс

есть конечно недостаток.. timeout здесь обязателен, дабы убедиться что failure не вызывается

Alexander
27.06.2017
12:20:42
что такое noexcept квалификатор в двух словах?
спецификация, что твоя сущность не бросит исключения. Замена спецификации исключений

Berkus
27.06.2017
12:20:56
я бы свернул must() и mustNot() вместе с експектом, чтобы меньше писать

Alexander
27.06.2017
12:22:08
нет

Kirill
27.06.2017
12:22:23
не забываем что ноексепт принимает буль

Kirill
27.06.2017
12:23:07
тоесть можно как указать что функция/метод не будет кидать експешн, как можно и явно указать,что будет

например деструктору сказать, все ок, ты можешь кидать ексепшн и не умереть

Roman
27.06.2017
12:25:01
я бы свернул must() и mustNot() вместе с експектом, чтобы меньше писать
тогда лучше ожидать true и возвращать bool из must / mustNot ASSERT(cpMain.must()) ASSERT(cpAttached.must()) ASSERT(cpFailure.mustNot()) тогда получается что первый ASSERT на cpMain блокирует control flow и только позже получает boolean. mustNot() в таком случае должен вернуть true если checkpoint таймаутил, а must() наоборот, вернуть true если таймаута не было

Дед Пегас
27.06.2017
12:36:43
http://foonathan.net/blog/2017/06/27/lazy-evaluation.html

Mikhail
27.06.2017
12:38:58
Tema
27.06.2017
12:39:16
http://foonathan.net/blog/2017/06/27/lazy-evaluation.html
картинка как у сборников альфа матрикс

Yury
27.06.2017
13:53:49
Подскажите аналог promise из js в c++?

Дед Пегас
27.06.2017
13:59:35
http://en.cppreference.com/w/cpp/thread/promise

Это?

Google
Yury
27.06.2017
13:59:48
нет

нужна однопоточная обертка для вызова колбека

Alexander
27.06.2017
14:00:26
так, что ты хочешь сделать?

я просто с js не знаком, не знаю, как там что работает

Yury
27.06.2017
14:00:51
https://learn.javascript.ru/promise

вот пример

Arseny
27.06.2017
14:01:04
В javascript так future называют

Admin
ERROR: S client not available

Yury
27.06.2017
14:02:11
я пробежался по std::async, promise, future, и как понял это обертки для многопоточного апи.

мне просто удобно вызов колбека хочется обернуть

Anatoly
27.06.2017
14:02:58
Подскажите аналог promise из js в c++?
наверняка что-то должно найтись на гихабе, на коленке это выглядит так std::async(std::launch::async, [](std::function<void()> success, std::function<void()> fail) { try { // async throwable process success(); } catch (...) { fail(); } }, []() { }, []() { });

Yury
27.06.2017
14:03:39
Да, мне кажется много решений должно быть. Но решил спросить, вдруг более менее стандартизированное есть.

Arseny
27.06.2017
14:04:11
Если просто callback, то это про lambda и std::function видимо.

Yury
27.06.2017
14:05:01
httpGet('/article/promise/user.json') .then(JSON.parse)

Вот пример из js.

Yury
27.06.2017
14:05:17
httpGet возвращает промис

у промиса метод then, куда можно передать колбек

Anatoly
27.06.2017
14:05:44
два колбека

Yury
27.06.2017
14:06:07
да, но суть не в этом :)

Google
Simon
27.06.2017
14:06:45
http://foonathan.net/blog/2017/06/27/lazy-evaluation.html
макросы с лямбдой, ого

Yury
27.06.2017
14:07:05
в таком апи можно строить удобные цепочки асинхронных вызовов

Anatoly
27.06.2017
14:07:45
в таком апи можно строить удобные цепочки асинхронных вызовов
более мощным аппаратом обладает следующее поколение RX, посмотри rxcpp должно подойти

Alexander
27.06.2017
14:08:05
так мб ему просто std::function хватит?

присвоил функцию ему, и потом вызвал

Yury
27.06.2017
14:08:15
Посмотрю, спасибо.

да, это просто обертка над колбеком, все верно

Anatoly
27.06.2017
14:08:38
Yury
27.06.2017
14:08:38
просто удобная, читабельная и т.д.

Alexander
27.06.2017
14:09:04
просто удобная, читабельная и т.д.
читабельная - это не совсем по адресу, конечно. Но тут тебе всегдла typedef подсобят

Дед Пегас
27.06.2017
14:10:05
httpGet('/article/promise/user.json') .then(JSON.parse)
Это есть в бубсах и (ЕМНИП) в C++17.

Yury
27.06.2017
14:10:15
У меня с++ 11

cocos2d-x

Arseny
27.06.2017
14:10:27
Не, then в std::future только планируется

Дед Пегас
27.06.2017
14:10:36
Boobs твой выбор!

Arseny
27.06.2017
14:11:33
Boobs твой выбор!
Это что такое?

Alexander
27.06.2017
14:13:38
Это что такое?
ну переведи...

Дед Пегас
27.06.2017
14:14:24
Boost

Anatoly
27.06.2017
14:15:33
Boost
а что там в бусте аналог JS Promise?

Страница 1017 из 2477