powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой инструмент многопоточности используете?
25 сообщений из 69, страница 1 из 3
Какой инструмент многопоточности используете?
    #39395894
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы. К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности).

OpenMP не позволяет работать с циклами, у которых окончание итераций по условию (например, окончание файла или достижение заданного результата).

Intel Trading Blocks- нет литературы на русском, да и код превращается в адовы кирпичи.

Что посоветуете?
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39395900
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_beginthreadex() рекомендую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39395910
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЧто посоветуете?
Начать с чего попроще перед тем, как лезть в многопоточку.

Учебники там разные...
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39395925
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL, multutheading это не опция С++ а свойство ОС (Linux, Windows)
и выбирать надо сначала то под что будешь кодить в будущем.

Тоесть это не вопрос вкуса а скорее обстоятельство или начальные
условия.

P.S. Посмотри Boost.Thread. Возможно с некоторой натяжкой сойдет
за то что тебе нужно.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39395964
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы.
К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности).
Это касается любого ЯП. Это обратная сторона многопоточности.

AlekseySQLЧто посоветуете?
Стандартные средства С++ std::async std::thread и все что связано с синхронизацией

Можешь свою обертку написать. Делаешь менеджер потоков, класс "задача" и дальше ты генеришь задачи, а менеджер рассовывает задачи по потокам. Можешь почитать например как в C# это устроено, класс Task<T>.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396084
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonAlekseySQL, multutheading это не опция С++ а свойство ОС (Linux, Windows)
и выбирать надо сначала то под что будешь кодить в будущем.

Тоесть это не вопрос вкуса а скорее обстоятельство или начальные
условия.

P.S. Посмотри Boost.Thread. Возможно с некоторой натяжкой сойдет
за то что тебе нужно.

Вообще- то уже давно созданы кроссплатформенные инструменты. Например, тот же Boost.Thread

И среди этих кроссплатформенных средств я как раз и выбираю.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396088
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TAlekseySQLМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы.
К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности).
Это касается любого ЯП. Это обратная сторона многопоточности.

AlekseySQLЧто посоветуете?
Стандартные средства С++ std::async std::thread и все что связано с синхронизацией

Можешь свою обертку написать. Делаешь менеджер потоков, класс "задача" и дальше ты генеришь задачи, а менеджер рассовывает задачи по потокам. Можешь почитать например как в C# это устроено, класс Task<T>.

Второе утверждение противоречит первому :) В С# оказывается не все так плохо: есть уже более высокий уровень абстракции в виде задач. Разумеется под C# писать не буду, и обдумываю написать свой менеджер задач.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396116
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLВторое утверждение противоречит первому
Не противоречит, просто ты еще не пробовал асинхронные алгоритмы отлаживать :)
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396125
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы.
Что посоветуете?

Я как раз именно библиотеку многопоточности C++ и посоветую.
std::thread и так далее, бывшая boost thread.

Она просто великолепна.

Я уверен, что ты не ее имел в виду в первой строке.

Open MP конечно хорошо, но это для тупых математикав, которым лень программировать.

Ну и что из заставит взяться за C++ - не понятно, у них есть великолепный Fortran, который очень хорошо всё это делает.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396132
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAlekseySQL, multutheading это не опция С++ а свойство ОС (Linux, Windows)
и выбирать надо сначала то под что будешь кодить в будущем.



уже нет, уже у нас есть встроенная ванильная многопоточность. Переносимая, стандартная.
С С++11.


maytonP.S. Посмотри Boost.Thread. Возможно с некоторой натяжкой сойдет
за то что тебе нужно.

не нужен уже Boost.Thread, он уже вошел в стандарт.
конечно, это если у вас есть с++ компилятор.
VC уже поддерживает.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396142
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
Про Open MP...

Это очень классная вещь, но она для очень тупых случаев.

Представьте, что вам нужно просчитать
среднюю зарплату по всему населению Земли...
это тупо много, поэтому будет тупо долго, но если разбить на N кусков и отдать каждый своему потоку, а потом еще раз усреднить, то будет тупо в N раз (почти) быстрее.
Вот такие тупые задачи решает Open MP.
но зато она делает это автоматически, что очень приятно.

часто вы такие задачи решали?
я лично - ни разу за всю жизнь и карьеру.
так что для программирования на C++ оно практически не нужно.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396178
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЯ как раз именно библиотеку многопоточности C++ и посоветую.
std::thread и так далее, бывшая boost thread.

Она просто великолепна.

Сейчас изучаю книжку "Параллельное программирование на С++ в действии". Как изучу отпишусь с вопросами :)

MasterZivMasterZiv,
Про Open MP...

С умным человеком и поговорить приятно :)
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396210
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLMasterZivЯ как раз именно библиотеку многопоточности C++ и посоветую.
std::thread и так далее, бывшая boost thread.

Она просто великолепна.

Сейчас изучаю книжку "Параллельное программирование на С++ в действии". Как изучу отпишусь с вопросами :)



Во, это -- самая правильная книжка. Мало того, что хорошо написана, так ещё и написана именно автором этой библиотеки (подсистемы поддержки многопоточности в стандартной библиотеке С+) - Anthony Williams.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396211
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivуже нет, уже у нас есть встроенная ванильная многопоточность. Переносимая, стандартная. С
С++11.

И при этом она совершенно отстойна в том плане, что заставляет делать прыжки в ширину для
в общем-то тривиальных (в нативном API) задач. Например, не даёт подождать завершения
одного любого потока из пула.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396256
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivAlekseySQLпропущено...


Сейчас изучаю книжку "Параллельное программирование на С++ в действии". Как изучу отпишусь с вопросами :)



Во, это -- самая правильная книжка. Мало того, что хорошо написана, так ещё и написана именно автором этой библиотеки (подсистемы поддержки многопоточности в стандартной библиотеке С+) - Anthony Williams.
Читал в оригинале на английском. Скажу лишь, что она совсем не для новичков. Мало того, тема атомарных операций и, в частности, memory_order'а не в совсем понятной манере, что приходилось "напрягаться" сверх нормы, чтобы осилить.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396523
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZivуже нет, уже у нас есть встроенная ванильная многопоточность. Переносимая, стандартная. С
С++11.

И при этом она совершенно отстойна в том плане, что заставляет делать прыжки в ширину для
в общем-то тривиальных (в нативном API) задач. Например, не даёт подождать завершения
одного любого потока из пула.


Чего? JOIN и всё...
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396532
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZMasterZivAnthony Williams.
Скажу лишь, что она совсем не для новичков.


Да ну, всё разжёвано и в рот положено, начиная с азов.

NekZМало того, тема атомарных операций и, в частности, memory_order'а не в совсем понятной манере, что приходилось "напрягаться" сверх нормы, чтобы осилить.

Ну, это -- вообще далеко не самая простая и очевидная вещь, и на самом деле не самая нужная для конечного разработчика.
В принципе, её не обязательно понимать глубоко, или даже вообще понимать.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396581
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЧего? JOIN и всё...
Ну да, ну да. Вот только join это метод std::thread, который ждёт завершения этого
конкретного потока. А теперь внимательно перечитывай "любого одного потока" до просветления.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396690
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZivЧего? JOIN и всё...
Ну да, ну да. Вот только join это метод std::thread, который ждёт завершения этого
конкретного потока. А теперь внимательно перечитывай "любого одного потока" до просветления.


В смысле -- ХОТЯ БЫ одного ?
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396693
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ смысле -- ХОТЯ БЫ одного ?
Дословно. У тебя есть 20 потоков и ты ждёшь завершения любого из них. Аварийного или
штатного - без разницы. Как такое обеспечить в случае std::thread?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396708
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZivВ смысле -- ХОТЯ БЫ одного ?
Дословно. У тебя есть 20 потоков и ты ждёшь завершения любого из них. Аварийного или
штатного - без разницы. Как такое обеспечить в случае std::thread?

Хоть std::thread появился и на том спасибо. Уже не надо кучу #ifdef WIN32 ...
По хорошему еще надо std::thread_pool и там это реализовать. Много еще чего надо, но стандартописатели не торопятся.
А этот вопрос вроде как можно через std::thread::native_handle порешать.
Без std::thread прыгать гораздо шире надо было.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396743
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovMasterZivВ смысле -- ХОТЯ БЫ одного ?
Дословно. У тебя есть 20 потоков и ты ждёшь завершения любого из них. Аварийного или
штатного - без разницы. Как такое обеспечить в случае std::thread?


В стандарте есть "продвинутые" потоки future/async.
Например, есть 4 потока и ждешь пока освободиться любой из них успешного или аварийного, и так 20 раз.

http://coliru.stacked-crooked.com/a/d1d43d9111f669be

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
#include <iostream>
#include <future>
#include <thread>
#include <vector>
#include <chrono>
#include <stdexcept>
 
void thread_func() {
    std::cout << "new thread \n";  
    
    if (rand()%2 == 0) throw std::runtime_error("my exception");
}
 
int main()
{
    std::vector<std::future<void>> thread_pool(4);
    
    // occupy all cores
    for(auto &i : thread_pool) i = std::async(std::launch::async, thread_func);
    
    // start a new task in freed thread (for example 20 times)
    for(int k = 0; k < 20;) {
        for(auto &i : thread_pool)
            if(i.wait_for(std::chrono::seconds(0)) == std::future_status::ready) 
            {
                try { i.get(); } catch(...) { std::cout << "exception was in thread \n"; }
                i = std::async(std::launch::async, thread_func);
                ++k;
            }
        std::this_thread::yield();
    }
    
    return 0;
}
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396770
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы.

А все же, что ты имел в виду конкретно?
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396777
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинНапример, есть 4 потока и ждешь пока освободиться любой из них успешного или аварийного, и
так 20 раз.

Опрос состояния всех потоков в цикле. Прэлееестно. Это даже не прыжки в ширину, это бег на
месте с препятствиями.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39396805
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovВася УткинНапример, есть 4 потока и ждешь пока освободиться любой из них успешного или аварийного, и
так 20 раз.

Опрос состояния всех потоков в цикле. Прэлееестно. Это даже не прыжки в ширину, это бег на
месте с препятствиями.

К тому же никто не обещал что там есть какие-то потоки. Больше похоже на node.js стиль
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой инструмент многопоточности используете?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]