1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gepengjun-thread-flow

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README_EN.md

ThreadFlow

Введение

Инструмент для организации потоков. Может выполнять любую последовательность параллельных комбинаций потоков;
Каждый блок может иметь свои параметры и возвращаемые значения. Поддерживает асинхронный обратный вызов результатов отдельных блоков.
Поддерживает контроль тайм-аута для отдельных блоков;
Поддерживает тайм-аут вызова общей задачи и вызов результата после завершения общей задачи;
Поддерживает динамическое решение о пропуске выполнения блоков, которые не были выполнены и больше не должны выполняться, а также может прерывать поток, который выполняется, но не должен продолжаться;
Каждый блок можно использовать в разных хореографиях задач;
Поддержка динамического изменения последующих блоков;
Если у вас есть хорошие предложения, пожалуйста, оставьте сообщение;
Если вам нравится или это полезно, поставьте звезду :)

Архитектура программного обеспечения

Понимание этого проекта можно увидеть из тестовых случаев в тесте.
Основные функции:
1. Последовательный вызов потока:
  1.1. порядок выполнения           A -> B -> C
       стоимость выполнения    1      1      1     блок: секунда
       исключительно                      N    N    N
Ожидается: блок C выполняется после блока B, который выполняется после блока A

  1.2. порядок выполнения           A -> B -> C
       стоимость выполнения   1      1      1     блок: секунда
       исключительно                      N    Y    N
Ожидается: блок B выполняется исключительно после успешного выполнения блока A, блок C напрямую становится исключительным, чтобы избежать выполнения

2. Простой параллельный вызов:
  2.1 все не нужны для следующего
       блоки A,B,C не нужны для блока D, затем блок D выполняется после первого успешного выполнения в A,B,C
      A -- ненужный успешный 1 секунда-->
      B -- ненужный успешный 2 секунда--> D -- успешный 0,5 секунды--
      C -- ненужный успешный 2 секунда-->
Ожидается: блок D выполняется после успешного выполнения блока A. Устанавливается состояние выполнения B,C как исключительное. Примерно через 1,5 секунд мы можем получить результат блока D.
  2.2 некоторые необходимы, а некоторые не нужны для следующих
       блок A необходим для блока D, а блоки B,C не нужны для блока D. Затем блок A сначала успешно выполняется, и блок D не должен выполняться в это время до тех пор, пока первый не будет успешно выполнен в B,C
       A -- необходимый   успешный 1 секунда-->
       B -- ненужный успешный 2 секунда--> D -- успешный 0,5 секунда--
       C -- ненужный успешный 2 секунда-->
Ожидается: блок D выполняется после того, как первый успешно выполнится в B,C. Мы можем получить результат через 2,5 секунды.
  2.3 все необходимы для следующих
      блоки A,B,C необходимы для блока D, тогда блок D выполняется после последнего успешного выполнения в A,B,C
      A -- необходимый   успешный 1 секунда-->
      B -- Необходимые и успешные условия выполнения: 2 секунды

D — успешно выполняется за 0,5 секунды.

C — необходимо для успешного выполнения, которое занимает 3 секунды.

Ожидается: D выполняется после успешного завершения блока C.

Все необходимые условия для следующего блока, кроме одного из предыдущих, выполняются исключительно.

Блок A необходим для блока D, успешно выполняется за одну секунду.

Блок B необходим для блока D, выполняется исключительно за одну секунду.

Блок C необходим для блока D, успешно выполняется за две секунды.

A — необходимо, успешное выполнение за 1 секунду.

B — необходимо, исключительное выполнение за 1 секунду.

C — необходимо, успешное выполнение за 2 секунды.

Ожидается: блок D устанавливает своё состояние выполнения как исключительное, чтобы аннулировать выполнение, и устанавливает состояние выполнения блока C как исключительное после исключительного выполнения блока B.

Последовательная параллельная комбинация

A — выполняется за 1 секунду.

C — не требуется, выполняется за 1 секунду.

B — выполняется за 1 секунду.

F —>

D — выполняется 10 секунд.

E — не требуется, выполняется за 1 секунду.

Блоки A, B и D запускаются одновременно. В конце блок F выполняется после успешного выполнения блока C. Состояние выполнения блока E устанавливается как исключительное для аннулирования выполнения, а состояние выполнения блока D устанавливается как исключительное. Поток блока D прерывается, если enableInterrupted блока D имеет значение true.

WorkHandler можно расширить

Пример:

  1. Текущая работа выполняется после того, как предыдущая завершается исключительно.
  2. Можно добавить следующую работу в зависимости от состояния выполнения текущей работы.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Инструмент для организации потоков. Может выполнять параллельное объединение произвольных потоков; поддерживает контроль тайм-аута для отдельных блоков; каждый блок может иметь собственные параметры и возвращаемое значение. Поддерживает асинхронный обратный вызов для результата отдельного блока. Поддерживает тайм-аут для вызова общей задачи и вы... Развернуть Свернуть
Apache-2.0
Отмена

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/gepengjun-thread-flow.git
git@api.gitlife.ru:oschina-mirror/gepengjun-thread-flow.git
oschina-mirror
gepengjun-thread-flow
gepengjun-thread-flow
master