Форум программистов, компьютерный форум, киберфорум
Erlang, OTP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 26.12.2019
Сообщений: 170

Потоки

17.03.2023, 01:57. Показов 1629. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача звучит так.

Реализуйте модуль parent_children:
* start(N::integer()) запускает N+1 процесс: "родитель" и N "детей". Каждый из
детей ждёт сообщений. Если получено сообщение stop, процесс останавливается
без ошибки; если получено сообщение die, процесс падает с ошибкой; любое
другое сообщение печатается в оболочке. В случае, если один из детей умрёт с
ошибкой, родитель его перезапускает и печатает сообщение об этом. Если
родитель умирает, все дети тоже должны умереть.
* send_to_child(I::integer(), Msg::any()) посылает родителю сообщение, после
которого он пересылает Msg ребёнку номер I.
* stop() останавливает родителя.


Код что есть примерно такой, не имеет особого значения откуда он.
Вопрос следующий.
КАК это запустить так чтобы оно работало, а не выдавало кучу ошибок в консоль.

Пробовал в онлайн редакторах Replit и codingroung
Prolog
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-module(main).
-import(io,[fwrite/1]).
-export([start/0]).
 
start() ->
   fwrite("Hello, world!\n").
-module(main).
-export([star/2]).
 
-module(parent_children).
-export([start/1, send_to_child/2, stop/0]).
 
start(N) ->
    ParentPid = spawn_link(fun parent/0),
    Pids = [spawn_link(fun() -> child(ParentPid) end) || _ <- lists:seq(1, N)],
    ParentPid ! {init, Pids},
    ParentPid.
 
parent() ->
    receive
        {init, Pids} ->
            parent_loop(Pids)
    end.
 
parent_loop(Pids) ->
    receive
        {send_to_child, Index, Msg} ->
            case lists:nth(Index, Pids) of
                undefined ->
                    io:format("Invalid child index: ~p~n", [Index]);
                ChildPid ->
                    ChildPid ! Msg
            end,
            parent_loop(Pids);
        stop ->
            [Pid ! stop || Pid <- Pids];
        {'EXIT', ChildPid, _Reason} ->
            NewChildPid = spawn_link(fun() -> child(self()) end),
            NewPids = lists:keyreplace(ChildPid, 1, Pids, NewChildPid),
            io:format("Child process ~p exited. Restarted as ~p.~n", [ChildPid, NewChildPid]),
            parent_loop(NewPids)
    end.
 
child(Parent) ->
    process_flag(trap_exit, true),
    Parent ! {register, self()},
    child_loop().
 
child_loop() ->
    receive
        stop ->
            exit(normal);
        die ->
            exit({error, "Child process died"});
        Msg ->
            io:format("Child received message: ~p~n", [Msg]),
            child_loop()
    end.
 
send_to_child(ParentPid, Index, Msg) ->
    ParentPid ! {send_to_child, Index, Msg}.
 
stop(ParentPid) ->
    ParentPid ! stop.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2023, 01:57
Ответы с готовыми решениями:

Потоки
Слышал где-то, что в erlang -е очень лёгкие потоки... Настолько лёгкие, что можно создать, например 10^5 штук и при этом всё будет...

Потоки
не могу разобраться пока в скрипте, что не так делаю? #!/usr/bin/perl use warnings; use strict; use threads; use LWP::Simple; ...

Потоки
Реализовать программу,выполняющую в два потока. Первый поток выводит строку ping, второй строку pong на стандартный вывод, т.е. sout. ...

9
913 / 339 / 135
Регистрация: 18.07.2017
Сообщений: 1,485
17.03.2023, 13:02
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Пробовал в онлайн редакторах Replit и codingroung
Перестань страдать фигней и поставь инструменты от разработчиков эрланга. Жалко 300Мб на ж.д.?
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Код что есть примерно такой, не имеет особого значения откуда он.
Согласен, потому что он либо скопирован неправильно, либо изначально нерабочий.
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
КАК это запустить так чтобы оно работало, а не выдавало кучу ошибок в консоль.
Оно и не будет работать. Исправь ошибки, которые тебе выводит компилятор.

Добавлено через 3 минуты
Цитата Сообщение от assemberist Посмотреть сообщение
Перестань страдать фигней и поставь инструменты от разработчиков эрланга.
Bash
1
2
3
4
#ubuntu
apt install erlang
#arch
pacman -S erlang
Под винду тоже есть. Бери с офф сайта: https://www.erlang.org/downloads
0
3 / 3 / 1
Регистрация: 26.12.2019
Сообщений: 170
17.03.2023, 16:47  [ТС]
спасибо за пустые пояснения.

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

Если я пишу на форум с просьбой помочь разобраться с ошибками в коде то это значит что я понятия не имею в чем они заключаются и как их исправлять.

Так что запомни, если кто то просит о помощи и ты не хочешь помогать, не давай советы капитана очевидности о том как нужно сделать, это только раздражает. Просто пройди мимо и дай возможность другим людям помочь если они захотят.
0
Модератор
 Аватар для Curry
5158 / 3482 / 536
Регистрация: 01.06.2013
Сообщений: 7,550
Записей в блоге: 9
17.03.2023, 17:03
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Если я пишу на форум с просьбой помочь разобраться с ошибками в коде то это значит что я понятия не имею в чем они заключаются и как их исправлять.
Тот код который вы приводите значит что вы не только не имеете представление об Erlang, но и о программировании вообще.
Так что помочь вам разобраться с ошибками не получится.
С таким уровнем знаний помогать бесполезно. Такие коды, наверное, вам chatgpt набрасывает и зачем вы предлагаете решать эти задания непонятно, толку всё равно не будет.
0
3 / 3 / 1
Регистрация: 26.12.2019
Сообщений: 170
17.03.2023, 20:21  [ТС]
Данную программу я купил. Сейчас уже разобрался и получил вроде как рабочий код. Во всяком для того чтобы сдать на тройку и забыть мне хватает. Erlang я не знал и не хочу знать так как я не похож на 40летнего. Для того чтобы работать программистом мне достаточно и Java.

Я благодарен вам, так как вы помогли заметно мне экономить время и денеги на тех задачах что я писал ранее.

Кстати про chatgpt я как-то не подумал.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38174 / 21109 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
17.03.2023, 21:47
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Для того чтобы работать программистом мне достаточно и Java
- надолго ли?
0
913 / 339 / 135
Регистрация: 18.07.2017
Сообщений: 1,485
17.03.2023, 22:37
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Когда у тебя сломается машина, надеюсь в сервисе тебе выдадут инструменты и скажут чинить самому.
Поправочка: бесплатно они разве что пинка для скорости дадут, чтобы от работы не отвлекал. Кстати, на сайте есть раздел фриланса. Но если что, я об это не говорил.
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Так что запомни
У тебя здесь нет власти, ArtoriasBrown.
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
если кто то просит о помощи и ты не хочешь помогать, не давай советы капитана очевидности
Какой вопрос - такой ответ.
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Данную программу я купил.
В таком случае нормальные люди идут с продавцом разбираться, а не на форум.
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Сейчас уже разобрался и получил вроде как рабочий код.
Ну надо же, капитанский совет
>> Исправь ошибки, которые тебе выводит компилятор.
оказался самым дельным.
Цитата Сообщение от ArtoriasDark Посмотреть сообщение
Erlang я не знал и не хочу знать так как я не похож на 40летнего.
Пойду нашей фирме скажу, что у нас всего 10 элангистов, а не 200. Ну им же меньше 40.
0
3 / 3 / 1
Регистрация: 26.12.2019
Сообщений: 170
22.03.2023, 15:47  [ТС]
Извиняюсь вспылил.
Я разобрался в вашем коде из другой темы, он идеально работает.

Добавлено через 1 минуту
Цитата Сообщение от assemberist Посмотреть сообщение
Кстати, на сайте есть раздел фриланса
честно я не знал, а знал бы давно пошел бы туда

Добавлено через 1 минуту
Цитата Сообщение от Catstail Посмотреть сообщение
надолго ли?
пока 2 года уже работаю.
Хотя хочу пойти из бэка в фронтенд на ангуляре работать.
0
3 / 3 / 1
Регистрация: 26.12.2019
Сообщений: 170
01.04.2023, 03:02  [ТС]
Ладно хорошо, купленная программа говно, я понятия не имею как это сделать. А еще я не нашел пункт фриланса где можно было бы нанять чтобы мне уже сделали эту срань.

Добавлено через 1 минуту
Так что прошу сжалиться над юродивым и помочь ибо мне нужно тупо эта прога для счастья и все
0
3 / 3 / 1
Регистрация: 26.12.2019
Сообщений: 170
01.04.2023, 03:02  [ТС]
Так что прошу сжалиться над юродивым и помочь ибо мне нужно тупо эта прога для счастья и все
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.04.2023, 03:02
Помогаю со студенческими работами здесь

Параллельные потоки
Доброго времени суток, знатоки! Есть задача, написать программу, со сложными и объемными вычислениями, я не хочу нагружать никого, по...

MFC, потоки
Здравствуйте ! Вопрос касается MFC, потоков, а точнее остановки их выполнения с продолжением после n времени. Т.е. создали поток...

потоки и процессы
Доброго времени суток! пишу прогу с использованием не стандартного протокола TCP, на который нет полного описания шифрования. ...

Вложенные потоки
func main() { for i:=0; i &lt; 2; i++ { go goSMS() } } var numberlock sync.Mutex func goNumber(){ var number = &quot;7777&quot; ...

Потоки и матрицы
Здравствуйте! Моя задача найти с помощью объектов синхронизации максимальный элемент в матрице. пока реализован код без потоков (только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru