반응형
scala.concurrent.blocking 사용 사례
나는 scala.concurrent.blocking
방법을 발견했고 Scala 문서에 따르면 이것은 ...
잠재적으로 차단되는 코드를 지정하여 현재 BlockContext가 런타임의 동작을 조정할 수 있도록하는 데 사용됩니다. 차단 코드를 올바르게 표시하면 성능이 향상되거나 교착 상태가 방지 될 수 있습니다.
몇 가지 의심이 있습니다.
- 새 스레드가 생성되는 요인은 무엇입니까?
scala.concurrent.ExecutionContext.Implicits.global
실행 컨텍스트 또는 사용자가 만든 실행 컨텍스트 에만 적용 됩니까?- 실행 파일을
blocking {
...로 래핑하면 어떻게됩니까}
? - 이 구조를 사용해야하는 실제 사용 사례입니다.
- 새 스레드는 fork / join 풀의 모든 스레드가
join
구성을 사용하여 서로를 기다리고 있음을 감지하고 잠재적으로 스레드 중 하나를 완료 할 수있는 완료해야 할 작업이 더 있음을 감지하면 fork / join 풀에 생성됩니다. 또는ForkJoinWorker
스레드 중 하나 가를 사용join
하지 않고 차단하는 코드를 실행하는 경우ManagedBlocker
s를 사용하여 풀에 알릴 수 있습니다 . - 잠재적으로 모든 종류의 실행 컨텍스트에 적용 가능합니다
ExecutionContext
. 작업자 스레드에 의해 실행 된 코드가 잠재적으로 일부 조건에서 차단되고이 조건이 다른 스레드를 사용하여 다른 것을 계산하여 해결 될 수 있음을 구현에 알리는 역할을합니다. . 실행 컨텍스트는 이에 대해 작동하거나 작동하지 않을 수 있습니다. 현재 (2.10, 2.11) 구현에서는blocking
기본 전역 실행 컨텍스트에서만 작동합니다. - 실행 파일을 차단으로 래핑하면 약간의 런타임 오버 헤드가 발생하므로 항상 그렇게하지 마십시오.
- 오랜 시간 (예 : 초 또는 분) 계산이 있거나를 사용하여 완료하기 위해 미래를
Await
기다리고 있거나 모니터의 상태가 해결되기를 기다리는 경우,이 조건은 다른 작업으로 해결할 수 있습니다. 동일한 실행 컨텍스트에서 실행되어야하는 future-이 모든 경우에blocking
.
편집하다:
Learning Concurrent Programming in Scala 책의 4 장을 살펴보십시오 .
참고 URL : https://stackoverflow.com/questions/19681389/use-case-of-scala-concurrent-blocking
반응형
'Program Tip' 카테고리의 다른 글
일부 개체 속성이 UnaryExpression이고 다른 속성이 MemberExpression 인 이유는 무엇입니까? (0) | 2020.11.02 |
---|---|
C ++ 11 std :: set 람다 비교 함수 (0) | 2020.11.02 |
Scala의 Cats 라이브러리는 scalaz와 어떤 관련이 있습니까? (0) | 2020.11.02 |
매달린 포인터를 비교하는 것이 합법적입니까? (0) | 2020.11.02 |
PHP 클래스 인스턴스화. (0) | 2020.11.02 |