0

비동기 작업자 스레드가 결과를 생성하고 수행해야 할 작업을 더 많이 식별하는 경우를 우아하게 처리하려고 노력해 왔습니다. 다른 방법으로 생각해 보려고 나무를 가로 질러 각 노드에서 작업을하는 경우 작업자는 트리 가운데에서 노드를 처리하고 스스로 작업이 필요한 자식 노드를 발견했습니다.더 많은 작업을 생성 할 수있는 비동기 작업을위한 디자인 패턴은 무엇입니까?

작업 스레드가 작업 대기열에 더 많은 작업을 추가하는 것이 합리적인 설계입니까? 이렇게하면 작업자가 자신이 속한 동시성 시스템에 대해 알게되고, 이는 필자에게 씌어지지 않은 규칙을 위반하는 것으로 보인다. 어떻게이 문제가 해결 되었습니까?

답변

1

작업 스레드가 작업 대기열에 더 많은 작업을 추가하는 것이 합리적인 설계입니까?

나는 작업자 작업이 작업 대기열에 대한 액세스 권한을 가지며 여기에 추가 작업을 추가 할 수있는 코드를 작성했습니다. 하지만 그건 디자인의 관점에서 당신의 과묵을 이해합니다.

어떻게이 문제가 해결 되었습니까?

하나의 대안은 작업의 결과가 목록에 추가 할 추가 작업 모음을 포함하는 것입니다. 따라서 완성 된 작업을 거두고있는 스레드가 결과를 볼 때 그 시점에 작업 큐에 추가 작업이 추가됩니다.

이것은 최적의 동시성을 위해 리퍼가 실시간으로 결과를 처리해야 함을 의미합니다.