- 浏览: 28671 次
- 性别:
- 来自: 广州
最新评论
编写一个程序,它生成N个进程并相连成环,。一旦启动,这些进程会绕环发送M个消息,然后当收到推出消息的时候正常终止。你可以调用rings:start(N,M,Msg)来启动环。
有两种策略可以完成这个练习,第一种是通过一个中央进程,它设置环并启动发送消息。第二种方法是换里面的新进程产生下一个进程。在编写程序的时候,请确保你的代码在每一个循环迭代中都有很多io:format声明,以检测到底什么发生了,什么没有发生。
http://www.sics.se/~joe/ericsson/du98024.html
不用使用中央管理来标记各个进程,不用保存,看上去好看很多
有两种策略可以完成这个练习,第一种是通过一个中央进程,它设置环并启动发送消息。第二种方法是换里面的新进程产生下一个进程。在编写程序的时候,请确保你的代码在每一个循环迭代中都有很多io:format声明,以检测到底什么发生了,什么没有发生。
http://www.sics.se/~joe/ericsson/du98024.html
-module(zog). %% This is a test program that first creates N processes (that are %% "connected" in a ring) and then sends M messages in that ring. %% %% - September 1998 %% - roland -export([start/0, start/1, start/2]). -export([run/2, process/1]). % Local exports - ouch start() -> start(16000). start(N) -> start(N, 1000000). start(N, M) -> spawn(?MODULE, run, [N, M]). run(N, M) when N < 1 -> io:format("Must be at least 1 process~n", []), 0.0; run(N, M) -> statistics(wall_clock), Pid = setup(N-1, self()), {_,T1} = statistics(wall_clock), io:format("Setup : ~w s", [T1/1000]), case N of 1 -> io:format(" (0 spawns)~n", []); _ -> io:format(" (~w us per spawn) (~w spawns)~n", [1000*T1/(N-1), N-1]) end, statistics(wall_clock), Pid ! M, K = process(Pid), {_,T2} = statistics(wall_clock), Time = 1000*T2/(M+K), io:format("Run : ~w s (~w us per msg) (~w msgs)~n", [T2/1000, Time, (M+K)]), Time. setup(0, OldPid) -> OldPid; setup(N, OldPid) -> NewPid = spawn(?MODULE, process, [OldPid]), setup(N-1, NewPid). process(Pid) -> receive M -> Pid ! M-1, if M < 0 -> -M; true -> process(Pid) end end.
不用使用中央管理来标记各个进程,不用保存,看上去好看很多
发表评论
-
Erlang 简单的节点互连
2014-03-19 23:41 564自己写的游戏跨服初步构架,以后再一点点完善,先记下时间线哈。 ... -
简单erlang节点互连实验
2014-03-10 15:53 769如果erlang:节点test1,test2互连接: 1.节点 ... -
Erlang OTP gen_event (1)
2014-02-26 15:06 1067演示gen_event的运行过程: mod_event_ma ... -
Erlang OTP gen_event (0)
2014-02-26 14:30 1197原英文文档:http://www.erlang.org/erl ... -
erlang efficient guide 3
2013-08-19 22:19 1115* 3 Common Caveats * 3常见 ... -
erlang efficient guide 2
2013-08-18 01:02 8662 The Eight Myths of Erlang Per ... -
fun还是如以前一样狂跩吊么?
2013-08-16 22:26 613fun这么好用。为什么老大在最近都说不要用? gen:cal ... -
emacs 的erlang-flymake
2013-08-14 15:15 1464emacs 设置erlang-flymake erlang- ... -
erlang ets
2013-07-22 23:08 1872参见:http://www.cnblogs.com ... -
erlang的编程规范
2013-03-26 17:17 1956Programming Rules and Conventio ... -
Erlang------Mnesia
2013-03-25 12:49 1708读erlang编程指南Mnesia笔记: 1.mnesia 是 ... -
匿名函数fun
2012-12-15 16:12 814lists:map(fun/1,[1,2,3]). 小试匿名函 ... -
并发编程实战otp--open telecom platform 二
2012-10-10 23:17 1154第二章:Erlang语言精要。 shell 的启动参数h ... -
并发编程实战otp--open telecom platform 一
2012-10-10 23:16 12251.erlang 的进程模型: 并发的基本单位是进程, ... -
learn some erlang
2012-10-09 22:54 721Erlang has this very pragm ... -
erlang语句块的简洁使用
2012-09-25 22:48 678begin end语句块的简洁使用:问题描述:将一堆人 ... -
命令式编程语言的标杆
2012-09-25 09:47 707命令式编程语言的标杆: 1.进程必须是语言的核心; 2.任何进 ... -
emacs与erlang的完美结合
2012-09-23 22:48 12871.在emacs中使用c+x c+z 启动erlang she ...
相关推荐
标题中的“守护进程程序C++编写保护进程”指的是在C++编程环境中,通过特定的技术手段创建一个守护进程,它的主要任务是确保指定的C#程序(在这里可能是另一个进程)能够持续运行,即使在某些异常情况下(如用户手动...
监视新进程注入(Monitoring New Process Injection)则是连环注入的一种变体,主要目标是检测和控制其他进程中的注入行为。 连环注入的核心在于分步骤地执行注入操作,每个步骤都可能涉及不同的注入技术,如DLL...
在操作系统的学习中,进程控制是至关重要的一环,而"fork两个子进程"是实现多进程交互的典型方式。本实验旨在深入理解操作系统如何创建、管理以及通信不同的进程,并且通过对比传统的进程创建方法,探索新颖的实现...
18. 死锁条件:死锁的必要条件包括循环等待资源,这意味着存在一个进程环,每个进程都在等待环中的下一个进程释放资源。 19. 文件逻辑组织:数据文件在存储介质上的逻辑组织形式与文件的逻辑结构相关,例如,连续...
进程监控是IT系统管理中的重要一环,尤其是在服务器运维中,确保系统稳定运行至关重要。本文将详细介绍基于Windows Forms(Winform)开发的进程监控程序,该程序能够根据进程的内存峰值来判断是否需要关闭和重启特定...
在x86架构的CPU中,执行模式分为四个环(Ring0、Ring1、Ring2、Ring3),其中Ring0拥有最高的权限,可以直接访问硬件和系统资源。驱动程序运行在Ring0,可以控制硬件、管理系统资源,因此具有极大的权力。 "隐藏...
在计算机科学中,对进程的管理和控制是非常重要的一环,这关系到系统的稳定性和性能。"进程高级管理工具"就是这样一个专门用于帮助用户更有效地管理系统进程的软件。 在Windows操作系统中,我们可以使用任务管理器...
进程间通信(IPC,Inter-Process Communication)也是进程管理的重要一环。在VC6.0下,我们可以利用管道、共享内存、消息队列、套接字等多种方式实现进程间的通信。这些技术对于构建复杂的多进程应用至关重要。 ...
- **循环等待条件**: 存在一个进程环,每个进程都在等待下一个进程占有的资源。 **10. 文件系统** - **定义**: 文件系统是操作系统中负责管理和组织文件的软件组件,提供文件的创建、删除、读写等功能。 - **关键...
对于开发者而言,深入理解Linux进程编程是提升技术水平的重要一环。本文将详细探讨Linux进程编程的基础知识,包括进程的概念、创建与管理进程、进程间通信以及线程的使用。 首先,我们需要了解什么是进程。在操作...
IPC(Inter-Process Communication,进程间通信)是进程管理中不可或缺的一环。Node.js中的IPC机制允许主进程和子进程之间传递消息和句柄。句柄传递是指主进程通过send()方法发送句柄给子进程,这里的句柄是一个可选...
在WinCE系统中,进程管理是非常关键的一环,它涉及到系统的资源分配、任务调度以及应用程序的执行。本文将深入探讨WinCE进程管理的相关知识点。 一、WinCE进程概念 在WinCE系统中,进程是执行中的程序实例,每个...
在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序,...了解如何使用C#操作进程是提升开发者解决问题能力的重要一环。希望这个例子能帮助初学者更好地理解C#中处理系统进程的方法,并在实际项目中灵活应用。
这种圆形进程时钟的设计理念,通过将时间的流逝以图形化的方式表现出来,既满足了审美需求,又为网页界面增加了动态交互元素。 HTML作为构建互联网基础的编程语言,赋予了开发者无尽的创造空间。随着技术的不断发展...
例如,恶意软件常常伪装成正常服务来逃避检测,因此识别异常服务行为是网络安全的重要一环。同时,优化不必要的进程可以减少资源消耗,提高系统响应速度。 在编程和系统管理工作中,开发人员和管理员经常使用各种...
在IT领域,进程隐藏是一种技术,它允许程序在操作系统中隐藏其存在,使其不被常规的进程管理工具检测到。这种技术通常用于恶意软件中,但也可能有合法用途,例如安全软件为了防止自身被恶意关闭。VB(Visual Basic)...
前趋图是一种有向无环图,用于表示多个进程或程序段之间的执行顺序关系。每个节点代表一个进程或程序段,边表示前趋关系,即节点A到节点B的边意味着A必须在B之前完成。前趋图确保了任务之间的正确执行顺序,避免了...
前趋图是一种用来描述程序段或进程执行顺序的工具,它是一个有向无环图(DAG)。每个节点代表一个程序段,有向边表示前趋关系,即一个程序段必须在另一个程序段之前完成。例如,P1→P2表示P1必须先执行完,P2才能...
- **前趋图**:前趋图是一种用来表示程序段或进程之间执行顺序的有向无环图。结点表示程序段,边表示前驱关系,确保无循环。 - **程序的并发执行**:在多道程序设计系统中,多个进程可以交替执行,表现出并发性。...
在IT运维领域,服务器进程监控是不可或缺的一环。本文将深入探讨一款基于MFC/C++编写的服务器进程监控工具,它具备选择监控单个或多个进程、进程崩溃时自动重启以及服务器日志定时清理等功能。通过了解其源码,我们...