Ada95 中的线程和信号量

2024-03-03

如何在 Ada95 中使用线程?我可以使用哪些函数来创建、销毁、停止和启动它们?

我如何在这种语言中使用信号量?


并发性内置于该语言中,因此您可以为任务(即线程)和受保护对象(即比信号量/互斥体/条件变量更强大)使用特定的 Ada 语法。这使得使用 Ada 编写多线程应用程序比使用 C/Java 等其他语言更容易(并且更不容易出错)。

不建议在 Ada 中使用信号量,受保护对象的功能要强大得多(但如果需要,您可以使用受保护对象轻松构建信号量)。

一些小的语法示例。任务(和受保护的对象)可以是静态的......

task My_Task;

task body My_Task is
begin
   -- Just print this to stdout and exit thread
   Ada.Text_IO.Put_Line("Hello, concurrent World!");
end;

...或动态创建

task type My_Task_Type(N : Natural);

task body My_Task_Type(N : Natural) is ...

...

T1 := new My_Task_Type(100);

abort T1;

比其他语言简洁得多(并且更易于维护)!请参阅用于管理动态任务的“new”和“abort”关键字,以及其他专用包(例如 Ada.Synchronous Task Control)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ada95 中的线程和信号量 的相关文章

  • 当可能存在迭代器时替换并发集合是否是线程安全的?

    我一直在阅读各种内容 似乎这应该有效 但我想确定一下 我有一个静态属性 它应该是一个缓存 加上一些与缓存数据相关的其他功能 它将实际数据存储在 ConcurrentBag 中 并且有一个 IEnumerable 方法来 过滤并 从此包中生成
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 使用来自多个 kafka 主题的消息的最佳实践是什么?

    我需要消费来自不同卡夫卡主题的消息 我是否应该为每个主题创建不同的消费者实例 然后根据分区数量启动一个新的处理线程 或者 我应该从单个消费者实例订阅所有主题 并且应该启动不同的处理线程 感谢和问候 梅加 唯一的规则是 您必须考虑 Kafka
  • 使用 async/await 抛出和捕获异常的正确方法

    全部请拿下面的二维码 Task
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 无锁算法真的比全锁算法性能更好吗?

    陈雷蒙德 http blogs msdn com b oldnewthing 一直在做一个huge http blogs msdn com b oldnewthing archive 2011 04 15 10154245 aspx ser
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 向无锁队列添加阻塞函数

    我有一个基于循环缓冲区的无锁多生产者 单消费者队列 到目前为止 它只有非阻塞push back and pop front 来电 现在我想添加这些调用的阻塞版本 但我想尽量减少这对使用非阻塞版本的代码性能的影响 也就是说 它不应该将它们变成
  • 并发访问且不受数据结构的影响

    问题是这样的 我有一个包含 500 个指针的数组 它们指向双向链表中的 500 个元素 有 10 个并行运行的线程 每个线程运行 50 个循环 并尝试释放列表中的某些元素 该列表已排序 包含简单整数 并且有 10 个其他线程并行运行 搜索包
  • 如何处理 MSTest 中的 currentDomain.UnhandledException

    我尝试根据答案实施解决方案单元测试时如何处理其他线程引发的异常 https stackoverflow com a 934604 518530 但我仍然不明白在处理程序中要做什么 假设我有一个测试 TestMethod void Test
  • Netty UDP 服务器中的线程未同时执行

    我正在分析的代码使用 Netty NioDatagramChannelFactory 创建 UDP 服务器 它创建一个线程池 ExecutorService threadPool Executors newCachedThreadPool
  • 寻找自定义 SynchronizationContext 的示例(单元测试所需)

    我需要定制同步上下文 http msdn microsoft com en us library system threading synchronizationcontext aspx that 拥有一个运行 Posts 和 Sends
  • GCD 和线程

    我想了解一些有关 GCD 和线程的知识 我的视图控制器中有一个 for 循环 它要求我的模型执行一些异步网络请求 因此 如果循环运行 5 次 模型将发出 5 个网络请求 考虑到我正在使用 NSURLConnection 的 sendAsyn
  • 以线程安全的方式获取随机数

    这是一篇描述随机数线程安全性的好文章 以线程安全的方式获取随机数 http blogs msdn com b pfxteam archive 2009 02 19 9434171 aspx 但我坚持使用 RandomGen2 示例 publ
  • 无法访问类型的封闭实例。 [复制]

    这个问题在这里已经有答案了 整个代码是 public class ThreadLocalTest ThreadLocal
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • 如何处理来自单独线程的窗口消息?

    我希望启动一个单独的线程来处理窗口消息 通过阻塞 GetMessage 循环 但之后仍然在初始线程中创建窗口 在单独的线程中 一旦启动 我就会调用PeekMessage使用 PM NOREMOVE 确保消息队列存在 有必要吗 然后 Atta
  • 异步填充数据集

    下面的方法用于填充数据集 如果我们以同步方式调用这个方法 它就可以正常工作 但现在我们需要以异步方式调用这个方法 那么我需要做哪些更改才能使下面的方法正常工作而不会出现任何问题 public DataSet Filldata string
  • 在 Ada 中使用递归绘制保龄球瓶(金字塔)

    我知道这是通过展示我最不复杂的作品来推动社区的善意 期待有人来拯救我 但我别无选择 没有什么可失去的 过去几周我已经浏览了数据包 文件 类型 标志和框 但没有涉及太多递归 特别是不要用递归来绘图 我的考试大约还有一周时间 我希望有足够的时间

随机推荐

  • Jupyter Lab未使用虚拟环境

    我创建了一个虚拟环境并安装了ipython all and jupyter与点 当我跑步时jupyter lab 打开笔记本 并尝试导入我在虚拟环境中安装的包 我收到 ModuleNotFoundError Running ipython在
  • 如何在 jquery 中切换 attr()

    我有一个简单的添加属性函数 list toggle click function list sort attr colspan 6 我的问题是 我怎样才能把它变成一个切换 所以colspan 6 下次单击时从元素中删除吗 如果你感觉很奇特
  • RenderTargetBitmap 渲染尺寸错误的图像

    我的任务是向用户显示 XPS 文档每一页的缩略图 我需要所有图像都很小 所以我用dpi设置为 72 0 我在 google 上搜索到 dpi 72 0 的 A4 纸的尺寸为 635x896 基本上 我执行以下操作 List
  • Sequelize 模型与模型不关联

    我花了几个小时却毫无结果 我有很多资源 它们都有点相同 但我就是无法让我的项目发挥作用 这个问题Sequelize js 不关联到 https stackoverflow com questions 50841912 sequelize j
  • 将此递归函数转换为迭代函数

    如何将这个递归函数转换为迭代函数 include
  • 如果在循环内部使用 getter 结果,则强制将其存储在变量中

    考虑以下课程 class Smth get functionWithSomeVeryUniqueName Some heavy calculations are here return obj gt obj Actually uses so
  • 使用Nutch如何抓取使用ajax的网页的动态内容?

    我正在使用 apache Nutch 1 10 来抓取网页并提取页面中的内容 一些链接包含在调用 ajax 时加载的动态内容 Nutch无法抓取和提取ajax的动态内容 我该如何解决这个问题 有什么解决办法吗 如果是 请帮助我回答 提前致谢
  • 有没有办法通过单个 HList 定义多个隐式证据?

    我有一段代码 在概念上类似于以下代码 library code trait Support K V def partialHandler K V key K value V implicit ev Support K V user code
  • (重新)使用 Visual Studio 2008 在 IE7 中启用 JavaScript 调试器

    Visual Studio 2008 附带了很好的 JavaScript 调试功能 但是我玩了一下 NetBeans 调试器 它在我的 IE 上安装了一个来自 Microsoft 的丑陋的脚本调试器 通常 IE 应该询问我想用什么来调试 但
  • 为什么 iOS 上需要重启才能发送崩溃日志?

    使用自定义的崩溃报告系统 例如专门从事iPhone 崩溃后要求用户发送崩溃日志 https stackoverflow com questions 5392283 ask the user to send crash log after c
  • C#命令获取结构偏移量?

    假设我有一个像这样的 C 结构 StructLayout LayoutKind Explicit struct IMAGE DOS HEADER FieldOffset 60 public int e lfanew 现在假设我从文件中读取数
  • 无法使用 MinGW 构建 Boost,它会寻找 Visual C++

    起初 我尝试使用以下命令构建安装了 MinGW 和 Microsoft Visual C 的 Boost bootstrap bat mingw b2 在构建过程中 我收到了大量日志行 表明构建是针对 Visual C msvc 完成的 所
  • 有没有办法让类名与表名不同?

    我们正在使用几年前创建的数据库 并且希望保持表名称相同 我们所有的表都命名为 tbl Orders 但我们希望模型 控制器等的类名称为 Orders OrdersController 等 我们使用实体框架将类映射到我们的表 抱歉 如果之前有
  • 通过反射访问Java中的私有变量[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个方法 该方法将使用反射在类中获取私有字段 这是我的课程 针对此示例进行了简化 public class SomeClass private int myField public SomeClas
  • 从字符串值设置 Android 图像

    目前我正在 Android 应用程序中绘制 PNG 图像 如下所示 ImageView image new ImageView context image setImageDrawable context getResources getD
  • 向 FormBuilder 添加一个方法,该方法调用呈现部分的辅助方法

    所以我有这个辅助方法 对吧 def table form field name or options nil args block render partial gt snippets table form field locals gt
  • 如何从 webview 打开 safari 移动应用程序中的链接

    这里有很多主题 但它们都需要本机代码交互才能工作 就我而言 有必要能够直接从 URL 执行此操作 而无需与我的移动应用程序进行任何交互 I tried a href target blank Open Google in Safari a
  • 创建非活动 C# WPF 窗口的缩略图

    我在这里浏览了许多主题 并通过谷歌搜索了信息 但没有找到与我的问题相关的任何内容 我想要做的是拥有它 以便当用户启动应用程序时 主窗口 不是 MDI 将打开并显示四个图像框 每个图像框显示当他们单击它时将打开的表单图像 一旦选定的表单打开并
  • 从 C# 运行带有参数的命令行?

    可以使用如下命令在 C 中运行命令行 process new Process process StartInfo FileName command process Start 问题是命令字符串是否包含参数 例如 C My Dir MyFil
  • Ada95 中的线程和信号量

    如何在 Ada95 中使用线程 我可以使用哪些函数来创建 销毁 停止和启动它们 我如何在这种语言中使用信号量 并发性内置于该语言中 因此您可以为任务 即线程 和受保护对象 即比信号量 互斥体 条件变量更强大 使用特定的 Ada 语法 这使得