powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Кто-нибудь тестировал, использовал и получал преимущества от T++?
8 сообщений из 8, страница 1 из 1
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38212835
Кто-нибудь тестировал, использовал и получал преимущества от Т++ (функциональное распараллеливающее расширение C++) ?
авторOpenTS (Open T-System, Т-система с открытой архитектурой) — это современная реализация Т-системы. Она обеспечивает автоматическое динамическое распараллеливание программ и предоставляет среду исполнения для языка программирования высокого уровня Т++, который является параллельным диалектом языка Си++[3].

OpenTS использует легковесные потоки и быстрым переключением (несколько наносекунд) и может работать с более чем миллионом легковесных потоков на процессор. На основе этих потоков реализован ряд возможностей, таких как мобильные потоки, объекты и ссылки, распределенная сборка мусора, доска объявлений для обмена данными и заданиями, и т. д.
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38212985
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
преимущества от T++,

Думаю, что в С++ вполне можно было реализовать все, за счет чего работает T++, не расширением синтаксиса, а просто библиотеками. Например: tfun реализуется std::async и tval - std::future.

Тогда можно было бы пользоваться.
А так, кто его знает какие ограничения имеются у их препроцессора.
Например, проглотит он Boost, С++11?
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38215212
Anatoly Moskovskyпреимущества от T++,

Думаю, что в С++ вполне можно было реализовать все, за счет чего работает T++, не расширением синтаксиса, а просто библиотеками. Например: tfun реализуется std::async и tval - std::future.

Тогда можно было бы пользоваться.
А так, кто его знает какие ограничения имеются у их препроцессора.
Например, проглотит он Boost, С++11?
С одной стороны вполне легко синхронный код превращается в асинхронный.
Было:
Код: plaintext
1.
2.
3.
int fib(int n) {
  return n < 2 ? n : fib(n-1) + fib(n-2);
}


Стало:
Код: plaintext
1.
2.
3.
4.
int fib(int n) {
    auto k1 = async(fib, n-1), k2 = async(fib, n-2);
    return n < 2 ? n : k1.get() + k2.get();
}


С другой стороны, для случаев не требующих большого оттачивания при распараллеливании приятней бывает использовать директивы по типу OpenMP, особенно для чужого кода, когда его строки вообще не меняются, а только добавляются новые. Внешне код почти не меняется и остается понятным его разработчику.
Ну и некие легковесные потоки тоже наверно что-то дают в таких случаях.

А для future/async существует в boost что-то подобное легковесным потокам?
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38215224
Да, забыл launch::async :)
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38215227
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
преимущества от T++А для future/async существует в boost что-то подобное легковесным потокам?
Думаю, что boost.coroutine можно прикрутить.

Только для вашего примера легковесные потоки вряд ли будут полезны.
Они скорее нужны не для параллельного, а асинхронного выполнения заданий (когда один из потоков ждет другой)
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38215241
Anatoly Moskovskyпреимущества от T++А для future/async существует в boost что-то подобное легковесным потокам?
Думаю, что boost.coroutine можно прикрутить.

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

А для параллельного выполнения больше бы подошел пул потоков из boost::asio, когда потоки уже созданы и нет необходимости их создавать каждый раз при вызове функции?
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38215259
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
преимущества от T++Если такие потоки ждут друг друга и параллельно не исполняются, то не проще ли просто вызывать функцию вообще без потоков
А по-вашему, как именно легковесные потоки в T++ выполняются внутри одного системного потока?:)
...
Рейтинг: 0 / 0
Кто-нибудь тестировал, использовал и получал преимущества от T++?
    #38215268
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
преимущества от T++Если такие потоки ждут друг друга и параллельно не исполняются, то не проще ли просто вызывать функцию вообще без потоков, и тогда зачем легковесные вообще нужны?
Речь идет про потоки у которых есть состояние, причем это состояние не в разделяемой памяти, а в стеке потока - в локальных переменных.
Например один поток в цикле генерирует данные кусками, а второй их парсит по мере поступления.
Тогда простой вызов функции уже не годится.

Можно правда такое состояние сделать явным и хранить например в неком объекте, который передавать в функцию и с помощью такого приема имитировать продолжение работы функции с того места где она прервалась.
С помощью макросов можно вполне красиво это реализовать.
Но этот подход имеет кучу проблем.

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


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