sza*_*man 3 multithreading semaphore ada
如何在Ada95中使用线程?我可以用什么功能来创建,销毁,停止和启动它们?
如何在这种语言中使用信号量?
San*_*ago 11
并发性内置于语言中,因此您对任务(即线程)和受保护对象(即比信号量/互斥量/条件变量更强大)具有特定的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;
Run Code Online (Sandbox Code Playgroud)
...或动态创建
task type My_Task_Type(N : Natural);
task body My_Task_Type(N : Natural) is ...
...
T1 := new My_Task_Type(100);
abort T1;
Run Code Online (Sandbox Code Playgroud)
比其他语言(更可维护)更简洁!请参阅'new'和'abort'关键字以管理动态任务,以及其他专用包,如Ada.Synchronous_Task_Control.
| 归档时间: |
|
| 查看次数: |
4187 次 |
| 最近记录: |