如何使用Ada95的线程?我可以使用哪些函数来创建,销毁,停止和启动呢?

我如何使用信号量在这个语言呢?

有帮助吗?

解决方案

阿达的术语为线程是一个“任务”。阿达没有直接内置到语言信号量(本身),但谷歌搜索的东西,如“阿达旗语”应该把一个公平命中数。 AdaPower.com ,特别是有不少关于在阿达(并发编程和,对于这个问题,几乎各种在阿达编程)的

其他提示

并发内置的语言,让你有任务的特定阿达语法(即线程)和受保护的对象(即它的作用远远超出信号灯/互斥/条件变量)。这使得更容易(且不易出错)编程多线程应用中阿达比在像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;

比其他语言(更maintenable)少得多的冗长!请参见“新”和“中止”的关键字管理的动态任务,以及其他专门的包,比如Ada.Synchronous_Task_Control。

信号量已经被“构造”通常是使用2个文件(更确切地说,定制)(文件扩展名.adb和.ads),复杂的信号灯可能需要3个文件(见“并行和实时编程在阿达”艾伦伯恩斯和安迪·韦林斯)。有没有螺纹,而是在阿达任务。

有关使用信号灯在阿达同步,你可能会看到我的Blogspot上的一篇文章! http://3chevrons.blogspot.com/2010/02/semaphores-在-ada.html

我得到你正在尝试涉及阿达并发C和/或线程Python中的感觉。然而,阿达吸引多少有些不同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top