0
votes

Qu'est-ce qui arrive au processus de génie si le module qui se passe matrienne?

Si un module A a une méthode SOMEMETHOD (). Si cette méthode est engendrée sous forme de thread à partir de ce module A, et si le code à l'intérieur de SOMEMETHOD () est une boucle infinie, alors dans ce cas, si le module A tombe en panne, le fil engendré s'exécutera "SOMEMETHOD" va également tomber? < / p>

Fondamentalement, je veux savoir s'il y a plusieurs threads engendrés à partir d'un module, et si ce module diminue, ces threads allumés seront-ils automatiquement abattus? ou ils continueront à courir (en supposant que le code est exécuté par ces threads est et une boucle infinie)


0 commentaires

3 Réponses :


1
votes

dans Erlang, le processus A génisse l'autre processus B. Selon les comportements que vous voulez b Continuez do ... Si le processus B fait le travail qui ne concerne pas les données ou les besoins communiqués pour traiter un tel que des liens A et B ou moniteur A, le processus B fera toute chose pour vous et ne vous souciez pas du processus A.

C'est une raison pour laquelle certains grands systèmes de télécommunication ont un comportement d'automate / de prise de contrôle pour résoudre ce problème. Ils ont besoin que 2 processus principaux fonctionnent parallèlement et surveiller mutuellement. Par exemple: A est Sub et B est principal, tous deux ensemble surveiller les processus de milliers de fils (S1, S2, S3 ...).

 Entrez la description de l'image ici

Lorsque le processus B Obtenez un problème, le processus A prendra immédiatement des données du processus et continuez ce que leur fils puis de redémarrer le processus B. Tous dépendent de quel comportement de votre application que vous souhaitez construire


0 commentaires

3
votes

Les modules ne tombent pas. Processus faire. Les modules pourraient être purgés à partir de la mémoire si vous avez plus qu'une nouvelle version chargée, puis tous les processus qui gèrent l'ancienne version seront tués, mais ce n'est pas ce que vous avez demandé. Les modules ne tombent pas. Processus font.


0 commentaires

0
votes

Si vous demandez:

Si j'apprends deux processus qui exécutent la même fonction dans un module, et le premier processus meurt, le deuxième processus meurt-il également? p> blockQuote>

Essayez ceci: p> xxx pré>

dans la coque: p> xxx pré>

après la sortie de sortie, rapidement émettre la commande i () code> (info) dans la coque: p> xxx pré>

au bas de la sortie ci-dessus, vous pouvez voir que My: get_divisor / 2 code> est en cours d'exécution dans le processus code> ainsi que dans le processus code>. Et, si vous regardez la sortie de la ligne IEX 2> CODE>, vous pouvez voir: p> xxx pré>

qui confirme que ce sont les processus que les processus Test () Code> Fonction engendré. P>

La sortie des deux processus de génie continue: P> xxx pré>

La dernière ligne indique que le processus code>, c'est-à-dire que le processus harry code> a eu une erreur, mais la sortie de Sally continue de: p> xxx pré>

la dernière ligne ci-dessus montre que maintenant le processus code>, c'est-à-dire le processus sally code>, avait une erreur. p>

Si vous utilisez le i () commande code> à nouveau, vous verrez qu'aucun des processus code> et code> est en cours d'exécution. P>

shell process = <0.64.0>
...
...
harry's pid = <0.71.0>
sally's pid = <0.72.0>


3> i().
=ERROR REPORT==== 10-May-2019::21:17:19 ===
Error in process <0.71.0> with exit value:
{badarith,[{my,get_divisor,2,[{file,"my.erl"},{line,5}]}]}
3> i().      
Pid                   Initial Call                          Heap     Reds Msgs
Registered            Current Function                     Stack              
<0.0.0>               otp_ring0:start/2                      376      990    0
init                  init:loop/1                              2              
<0.1.0>               erts_code_purger:start/0               233       11    0
erts_code_purger      erts_code_purger:wait_for_request        0              
<0.2.0>               erts_literal_area_collector:start      233        3    0
                      erts_literal_area_collector:msg_l        5              
<0.3.0>               erts_dirty_process_code_checker:s      233        3    0
                      erts_dirty_process_code_checker:m        1              
<0.6.0>               erlang:apply/2                        6772   714804    0
erl_prim_loader       erl_prim_loader:loop/3                   5              
<0.32.0>              gen_event:init_it/6                   1598     1848    0
error_logger          gen_event:fetch_msg/6                   10              
<0.33.0>              erlang:apply/2                        1598      954    0
application_controlle gen_server:loop/7                        7              
<0.35.0>              application_master:init/4              233       69    0
                      application_master:main_loop/2           7              
<0.36.0>              application_master:start_it/4          233       90    0
                      application_master:loop_it/4             5              
<0.37.0>              supervisor:kernel/1                    987     2202    0
kernel_sup            gen_server:loop/7                       10              
<0.38.0>              erlang:apply/2                        6772   142113    0
code_server           code_server:loop/1                       3              
<0.40.0>              rpc:init/1                             233       32    0
rex                   gen_server:loop/7                       10              
<0.41.0>              global:init/1                          233       63    0
global_name_server    gen_server:loop/7                       10              
<0.42.0>              erlang:apply/2                         233       25    0
                      global:loop_the_locker/1                 5              
<0.43.0>              erlang:apply/2                         233        3    0
                      global:loop_the_registrar/0              2              
<0.44.0>              inet_db:init/1                         233      350    0
inet_db               gen_server:loop/7                       10              
<0.45.0>              global_group:init/1                    233       74    0
global_group          gen_server:loop/7                       10              
<0.46.0>              file_server:init/1                    1598     3436    0
file_server_2         gen_server:loop/7                       10              
<0.47.0>              gen_event:init_it/6                    233       51    0
erl_signal_server     gen_event:fetch_msg/6                   10              
<0.48.0>              supervisor_bridge:standard_error/      233       50    0
standard_error_sup    gen_server:loop/7                       10              
<0.49.0>              erlang:apply/2                         233       11    0
standard_error        standard_error:server_loop/1             2              
<0.50.0>              supervisor_bridge:user_sup/1           233       72    0
                      gen_server:loop/7                       10              
<0.51.0>              user_drv:server/2                     2586    12209    0
user_drv              user_drv:server_loop/6                   9              
<0.52.0>              group:server/3                         233      101    0
user                  group:server_loop/3                      4              
<0.53.0>              group:server/3                      318187    86312    0
                      group:server_loop/3                      4              
<0.54.0>              kernel_config:init/1                   233       48    0
                      gen_server:loop/7                       10              
<0.55.0>              supervisor:kernel/1                    376      282    0
kernel_safe_sup       gen_server:loop/7                       10              
<0.59.0>              supervisor:disk_log_sup/1              233      147    0
disk_log_sup          gen_server:loop/7                       10              
<0.60.0>              disk_log_server:init/1                 610       91    0
disk_log_server       gen_server:loop/7                       10              
<0.61.0>              disk_log:init/2                       6772    37458    0
                      disk_log:loop/1                          5              
<0.63.0>              erlang:apply/2                       17731     4978    0
                      shell:shell_rep/4                       17              
<0.74.0>              erlang:apply/2                      318187    39091    0
                      c:pinfo/1                               50              
Total                                                     688344  1047971    0
                                                             273              
ok
4> 


0 commentaires