LINUX.ORG.RU

Подскажите язык программирования


0

0

Подскажите, пожалуйста, язык программирования, обладающий следующми возможностями.

- Есть объект «Рассчеты», содержаший несколько методов - Рассчет1, Рассчет2, Рассчет3 и т.д.

- Из какого-то главного метода программы запускаю несколько рассчетов:

Method Main()
     Run Рассчеты.Рассчет1()
     Run Рассчеты.Рассчет2()
     Run Рассчеты.Рассчет3()
     Print ("Подождите!")
     Wait 
     

причем, они запускаются одновременно, и используют таким образом, многоядерность процессора, и при этом из метода Main программа не выходит. Когда Рассчет1 заканчивается, генерируется событие Рассчет1.OnComplete и вызывается соответствующий метод:

Method Рассчет1.OnComplete()
     Run Рассчеты.Рассчет4()
     Run Рассчеты.Рассчет5()
End Method

При этом запускаются рассчеты, которые требуют результатов метода Рассчет1.

И т.д. То есть возможность легко и непринужденно запускать на выполнение сразу несколько методов.

★★★★★

> Рассчет1, Рассчет2, Рассчет3

Расчет1, Расчет2, Расчет3

anonymous
()

man треды

anonymous
()
Ответ на: комментарий от Zenom

Он на несколько ядер научился уже свои процессы разбрасывать сам? Или всё по старинке - сажать по ноде на ядро и ручками их связывать?

anonymous
()

make. для многоядерности запустить с ключом -jN

calculation: calc_4_5 calc_2 calc_3

calc_4_5: calc_1 calc_2
(make -jN calc_4 calc_5)

calc_1:
do something1

calc_2:
do something2

gaa ★★
()
Ответ на: комментарий от anonymous

>Он на несколько ядер научился уже свои процессы разбрасывать сам? Или всё по старинке - сажать по ноде на ядро и ручками их связывать?

# ./configure --help | grep thread
  --enable-threads        enable async thread support
  --disable-threads       disable async thread support
# ./configure --help | grep smp
  --enable-smp-support    enable smp support
  --disable-smp-support   disable smp support

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Это лишь косвенные признаки. Лучше покажи erlang-овский процесс со 100% загрузкой 2+ ядер. (Еще лучше, конечно, 2+ процессоров).

anonymous
()

#!/bin/bash
( Рассчёт1
  Рассчёт4 & Рассчёт5
  wait ) &
Рассчет2 &
Рассчет3 &
echo "Подождите!"
wait

Пойдёт?

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> Пойдёт?

У тебя там одна проблемка: ты не реализовал ожидание того момента, когда всё досчитается.

gaa ★★
()
Ответ на: комментарий от anonymous

>#!/bin/bash

>( Рассчёт1

> Рассчёт4 & Рассчёт5

> wait ) &

>Рассчет2 &

>Рассчет3 &

>echo "Подождите!"

>wait

У тебя будет последовательно считаться сначала расчет1, потом 2 и 3.

> а чо? С++ не канает уже?

Пример на С++ в студию.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> а чо? С++ не канает уже?

Если тебе охота написать сотню строк, реализующих с ошибками то, что делается одним условие в make --- то вперёд.

gaa ★★
()
Ответ на: комментарий от Nxx

> У тебя будет последовательно считаться сначала расчет1, потом 2 и 3.

Садись, двойка. Процессы будут выполняться параллельно.

lord_pnevmoslon
()
Ответ на: комментарий от anonymous

> а чо? С++ не канает уже?

Ну скажем в сравнении с ada - говно полное. Для такого типа задач.

ubber
()
Ответ на: комментарий от gaa

>У тебя там одна проблемка: ты не реализовал ожидание того момента, когда всё досчитается.

help wait. Эта фигня соответствует заказанному примеру (с точностью до опечаток). При том каждый отдельный расчёт можно писать на каком хочешь языке (возвращаясь к оригинальному вопросу).

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> help wait. Эта фигня соответствует заказанному примеру (с точностью до опечаток).

Да, что-то я прокосоглазил... Извиняюсь

gaa ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.