具体来说,任务有没有办法获得对其自身的引用?
例如:
task type someTask;
type someTaskAccessor is access someTask;
task body someTask is
pointerToTask : someTaskAccessor;
begin
pointerToTask = this;
end someTask;
我建议的最明显的解决方案是在任务的一开始就声明一个集合点(一个条目),向其中传递对刚刚创建的任务的引用。另一种可能性是对您的任务类型使用判别式,其作用是告诉新任务它所在的位置(将对新任务的访问权限传递给判别式)。不幸的是,我手头没有 Ada 编译器,所以我不能给你任何有效的例子。
无论如何,根据您的评论:需要在某处处理新任务的创建,此时您还需要确定该新任务将进入双向链接列表的位置(您需要知道至少一个现有任务当创建一个新的以便让他们进行交流时:他们不会神奇地发现自己)。当您拥有新创建的任务及其左右同行时,您可以利用这一刻来告诉每个人谁是他们的邻居(再次使用集合点)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)