API рабочих мест в Eclipse RCP, по-видимому, работает намного по-другому, чем я ожидал. Я думал, что создание и планирование нескольких Джобсов фактически приведет к созданию нескольких рабочих потоков, выполняя задания параллельно, если не будет конфликт 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() (например, спящего при удерживании блокировки)?
- делает любую часть платформы, позволяя двум рабочим заданиям фактически работать одновременно, на нескольких рабочих потоках, тем самым делая вышеуказанные функции полезными как-то?
Что мне здесь не хватает?
Будет ли менеджер работа по-прежнему обеспечивать соблюдение правил планирования для заданий, оканчивающих асинхронно? Я надеюсь, что это так (и я полагаю, что это то, что делает call done()), но я хотел бы быть уверенным. –
Я не думаю, что это решение. У меня только две рабочие задачи, и я вообще не использую async_finish. Не имеет никакого смысла, потому что «простые» задания уже запускаются в собственной нити! – Zordid