频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Ada 语言的基础学习--Tasking Hello World

来源: 作者: 出处:巧巧读书 2006-06-04 进入讨论组
  • 关 键 词:

Tasking Hello World

--------------------------------------------------------------------------------

Ada 提供具有一般用途的具有所有预期特征的程序语言。
Ada 也用来为程序员提供一些编写程序的实时组件
Ada 亦被称为实时运行的"工作"组件.
下面的程序用一些简单的 Ada 组件显示传统的"Hello World" 程序。
下面程序的每一行输出都是独立的,每个任务都是这样设计的,就是花任意量的时间完成他们的工作。
这就预示着程序每次运行时的输出次序都是不同的。

三个任务组件定义成 M1,M2,M3。 如果三个任务不同时运行,程序的输出顺序将会是预期的输出顺序。
但是程序每次输出结果顺序的变化证明了三个任务必须是在同一时刻执行的。

Ada.Strings.Unbounded package 用来在每个任务里面定义一个最大长度的字符变量.
允许你在没有格式问题的情况下使每个任务的每一行都在屏幕上平均的输出.

一个乱数产生器被用来使产生每个任务的延迟在 0.0秒和1.0秒之间. 随意延迟将会使每个任务的完成
都会花费不同的时间.
而最先完成的那个任务将会出现在屏幕的最前面.


-----------------------------------------------------------------------
-- Hello World program in Ada using tasking
-----------------------------------------------------------------------

with Ada.Text_Io;
with Ada.Strings.Bounded;
with Ada.Numerics.Float_Random;

procedure HelloTask is
   package Inner_Message is new
   Ada.Strings.Bounded.Generic_Bounded_Length(72);
   use Inner_Message;

   task type Messenger is
      entry Start(Message : in String);
   end Messenger;

  task body Messenger is
     use Ada.Numerics.Float_Random;
     Seed : Generator;
     Msg : Bounded_String;
  begin
     accept Start(Message : in String)
     do
        Msg := To_Bounded_String(Message);
     end Start;
     Reset(Seed);
     delay Duration(Random(Seed));
     Ada.Text_Io.Put_Line(To_String(Msg));
  end Messenger;

  M1 : Messenger;
  M2 : Messenger;
  M3 : Messenger;

begin

  M1.Start("Hello");
  M2.Start("From");
  M3.Start("Ada !");

end HelloTask;

转 载:http://www.qqread.com/other-devtool/n028117002.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章