Eclipse RCP中的Jobs API显然与我预期的不同。我认为创建和调度多个作业实际上会导致创建多个工作线程,并行执行作业,除非存在ISchedulingRule冲突。Eclipse RCP:一次只运行一个作业?
我回去,并更紧密地阅读文档,同时还发现了JobManager类此评论:
/**
* Returns a running or blocked job whose scheduling rule conflicts with the
* scheduling rule of the given waiting job. Returns null if there are no
* conflicting jobs. A job can only run if there are no running jobs and no blocked
* jobs whose scheduling rule conflicts with its rule.
*/
现在看起来对我来说,任务管理器将只尝试使用一个背景工作者线程。我完全错了吗?如果我是对的,
- 调度规则和锁定点是什么?如果只有一个工作线程,则工作永远不会彼此抢占。这些只有在Job的sleep()方法被调用的情况下才会被使用(例如,在持有锁的同时进行睡眠)?
- 该平台的任何部分是否允许两个作业到实际上在多个工作线程上同时运行,从而使上述功能以某种方式有用?
缺少什么我在这里?
实施,将作业管理仍执行调度规则被异步完成的工作?我希望它能做到(并且我认为这就是调用done()帮助完成的),但我想确定。 – 2009-12-09 05:57:17
我不认为这是解决方案。我只有两个作业正在运行,我根本不使用async_finish。没有任何意义,因为“简单”作业也已经在其自己的线程中运行! – Zordid 2012-12-06 15:09:13