@ProCxx

Страница 1781 из 2477
Antony
22.02.2018
07:39:46
она под мьютексом меняется, но барьер неплохо бы
Залочивание мьютекса - это acquire барьер, разлочивание - release барьер Так что никаких лишних барьеров городить не надо

Google
Berkus
22.02.2018
07:41:11
Залочивание мьютекса - это acquire барьер, разлочивание - release барьер Так что никаких лишних барьеров городить не надо
но всё таки я гляжу в сторону портануть это на ту очередь которую я вчера предложил положить в буст, т.к. она вроде бы адекватная

Antony
22.02.2018
07:52:37
но всё таки я гляжу в сторону портануть это на ту очередь которую я вчера предложил положить в буст, т.к. она вроде бы адекватная
Пара хитростей из мастер класса о том как сделать вашу очередь более отзывчивой/быстрой: * зовите notify() не под локом - это сэкономит несколько переключаений контекста и улучшит отзывчивость * вместо деки для waitQueue используйте интрузивный список (сделайте WaitInfo классом, с указателем на след WaitInfo и у вас получится односвязный список) - сможете избежать динамических аллокаций * Напомните, чем вас не устраивает более простой вариант: https://github.com/apolukhin/Boost-Cookbook/blob/second_edition/Chapter05/04_work_queue/main.cpp#L7-L46 ?

Berkus
22.02.2018
07:55:25
Max
22.02.2018
08:00:49
Можно ли замокать Q_OBJECT гугловским gmock-ом?

Anatoly
22.02.2018
08:04:57
Max
22.02.2018
08:05:42
Pepe
22.02.2018
08:14:44
Если есть вектор, и дано 8 тредов допустим. И мы делаем так что треды обрабатывают следующий свободный элемент, например 1й тред обрабатывает 1й, 2й -- 2й, а после освобождения, первый тред берет например 9й элемент, 2й -- 10й. Как такое правильно организуется? И лучше ли сделать если просто разбить вектор на 8 сегментов, и каждый обработать в каждом треде.

Google
Antony
22.02.2018
08:27:59
в частности в этой work_queue нету try_pop_task_for(ms)
вы мне подкинули идею. Надо мне сделать репозиторий с наборами готовых С++11 решений по самым популярным вопросам: * многопоточная очередь * как форсить rvalue, вместо perfect forwarding * case insensitive string/string_view * slab_allocator * private constructors + static shared_ptr crete() * circular_iterator * using heterogenous_map = std::map * fallback overload + specializations без enable_if * interruptable thread * coroutines ts: корутина, взаимодействующая с многопоточной очередью * boost: asserts with stacktrace * boost: simple spirit example * boost: graph parsing * ...

Berkus
22.02.2018
08:28:36
Yaroslav
22.02.2018
08:29:44
Antony
22.02.2018
08:29:45
Да там большинство вопросов в с++11 решаются без проблем. C++17 фишки тоже можно закинуть

Antony
22.02.2018
08:31:07
Да, только с кодом и попрактичнее

Arseny
22.02.2018
08:37:51
в частности в этой work_queue нету try_pop_task_for(ms)
Это-то как раз просто добавляется. А вот зачем использовать отдельную condition_variable на каждый pop?

Berkus
22.02.2018
08:39:50
Это-то как раз просто добавляется. А вот зачем использовать отдельную condition_variable на каждый pop?
Кто-то тут гордился поко - это вот к вопросу о говнокоде https://github.com/pocoproject/poco/blob/develop/Foundation/src/NotificationQueue.cpp#L103

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

Да там большинство вопросов в с++11 решаются без проблем. C++17 фишки тоже можно закинуть
Кстати, вопрос, а что вот с этой либой? http://htmlpreview.github.io/?https://github.com/henry-ch/asynchronous/blob/master/libs/asynchronous/doc/asynchronous.html она будет куда-то двигаться?

Antony
22.02.2018
08:55:28
я её вижу в первый раз :)

Anton
22.02.2018
09:13:37
Мужчины, а посоветуйте годный быстрый rwlock aka shared_mutex на c++11

Antony
22.02.2018
09:33:59
Anton
22.02.2018
09:34:15
Я так и думал...

Admin
ERROR: S client not available

Berkus
22.02.2018
09:35:22
бот?

Anton
22.02.2018
09:35:57
А как решить тогда такую задачку - есть куча читателей которые постоянно читают и есть один писатель который пишет крайне редко буквально раз в минуту и реже, читатели читают каждые 30ms...

Berkus
22.02.2018
09:36:24
spmc... хмм

Anton
22.02.2018
09:36:32
Сейчас системный рвлок стоит

Google
Berkus
22.02.2018
09:36:59
там вариантов чот многа

http://moodycamel.com/blog/2014/detailed-design-of-a-lock-free-queue вот например чел который вчера всплывал

Berkus
22.02.2018
09:38:19
> Then there's a small base class for the two types of internal SPMC producer queues (one for explicit producers that holds onto memory but attempts to be faster, and one for implicit ones which attempt to recycle more memory back into the parent but is a little slower) https://github.com/cameron314/concurrentqueue

Berkus
22.02.2018
09:39:42
с очередями у меня не очень хорошо еще с советских времён /shrug

Anton
22.02.2018
09:41:11
Спасибо, буду думать. Пока вариант с сисколами вроде справляется, задел на будущее смотрю

Square
22.02.2018
09:53:05
https://t.me/ProCxx/8

извините. ностальгирую

а если чтение/запись не последовательна?
для этой очереди без разницы

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