Raku에서 제공하는 동시성 메커니즘은 무엇이며 어떻게 평가할 수 있습니까? [닫은]
저는 현재 Raku에 관한 논문을 작성하고있는 학생으로, 높은 동시성을 다룰 때 Raku (Perl 6)가 좋은 언어인지 평가하기로 결정했습니다.
공식 웹 사이트를 제외하고는 Raku의 동시성에 대한 논문을 찾을 수 없었습니다. 또한 Raku의 동시성을 평가하는 방법에 대해 전혀 모릅니다 (예 : 어떤 프로그램을 사용해야하는지, 어떤 언어를 Raku와 비교해야하는지 등).
Raku에서 제공하는 동시성 메커니즘은 무엇입니까? 이것들은 어디에 문서화되어 있습니까? 기능과 성능을 어떻게 평가할 수 있습니까?
답변
Raku는 다양한 동시성 메커니즘을 제공합니다 (또한 여러 병렬 프로그래밍 접근 방식도 제공하지만 문제는 실제로 동시성에 관한 것이라고 가정합니다). Raku에있는 내용의 대부분은 다른 언어로도 볼 수 있습니다. 예를 들면 :
gather
/take
느리게 값을 생성하기위한 장치. 이것은 다양한 언어에서 생성기 함수로 볼 수 있습니다. 그러나 Raku에는 단일 스택 프레임 제한이 없으므로 코 루틴이 강력합니다. (비동기 프로그래밍과 관련된 어떤 상황에도 해당되지 않지만 여전히 동시성의 정의를 충족합니다.)Promise
비동기 동작의 하나의 결과를 반송하기위한 메커니즘 등이 많이있다Promise
자바 스크립트 또는 STask
닷넷을 (의미 가까이 후자 비트이다).- A
Supply
는 비동기 값의 스트림입니다. 반응 확장 (Rx) 과 상당히 공통점이 있지만 전체 Raku 언어 설계에 맞는 이름 지정 및 API를 선택했습니다 (예 : 메서드 이름이 시퀀스의 동기 이중과 일치). - A
Channel
는 완료 및 오류를 전달하는 메커니즘이있는 동시 대기열입니다. 즉,Supply
및Channel
패러다임 간에 쉽게 전환 할 수 있습니다 . 주요 차이점은 aChannel
에 저장 공간이 있다는 것입니다. 값을 입력하고 즉시 다른 작업을 수행 할 수 있습니다. 반면에 값을 aSupply
에 내 보내면 처리 비용을 지불해야합니다 (배압 메커니즘 제공). 단계적 이벤트 중심 아키텍처Channel
와 같은를 사용하여 다양한 아키텍처를 구축 할 수 있습니다 .
다른 언어로 직접 존재하지 않는 Raku에서 가장 독특한 개념은 react
/ supply
/ whenever
구조입니다. 여러 비동기 스트림의 프로세서를 작성 하는 것은 종종 어렵습니다 (구독 관리, 동시성 제어). 이 구조는 구조화 된 프로그래밍 접근 방식을 제공합니다. 그 외에도 Raku에서 언어 통합이 좀 더 강력 해지는 것이 대부분의 문제입니다. 이러한 문제를 라이브러리처럼 취급하지 않습니다.
다른 사람들이 지적했듯이 아직 공식적인 논문의 방법은 많지 않습니다. 그러나이 슬라이드는 흥미로울 수 있습니다 (면책 조항 : 그들은 제 것입니다. 저는 Raku 동시성 설계에 기여하고 react
/ supply
/를 발명했습니다 whenever
).
- Perl 6에서 동시성과 병렬성을 수행하는 8 가지 방법
- 반응, 공급 및 언제든지 이해
- 내부 Perl 6 동시성 -구현 방법 살펴보기
Raku의 동시성에 대한 논문 : 동시성 이 어떻게 작동하는지에 대한 설명을 원한다면 제가 아는 학술 논문이 없습니다. 일부 Advent Calendar 출판물에서 검색 할 수 있습니다 (예 : HTTP 서버의 동시성에 대한 출판물) . 내 자신의 Raku Recipes (Apress에서 발행)와 같이 Raku에 관한 대부분의 책에는 동시성에 대한 장이 포함되어 있으므로이 내용도 확인할 수 있습니다. 마지막으로, 제가 공동 저술 한이 논문 은 진화 계산을 위해 Raku의 동시성을 사용하여 좋은 결과를 얻었습니다.
Raku의 동시성을 평가하는 방법 : * Raku는 통신 순차 프로세스 를 사용하고 채널 을 일급 객체로 사용 합니다. 그런 의미에서 Go 와 비슷 합니다 . 반면에 Julia가 매크로를 통해 수행하는 것과 같은 방식으로 하이퍼 / 레이스 를 통해 데이터 흐름을 자동 스레드 할 수 있습니다. 그래서 그것들은 비교 대상이 될 수 있습니다.
아마도 perl6-users 메일 링리스트 가 이와 같은 질문을하기에 더 좋은 곳일 것입니다.
raku에 내장 된 CSP는 Tony (Anthony) Hoare가 고안 한 잘 확립 된 동시성 모델입니다. Tony의 연구 라인을 계속 한 Bill (William) Roscoe의 작품을 찾을 수도 있습니다. 이것은 일반적인 CSP 연구입니다. Raku에서 특별히 언급 할 수있는 것이 있는지는 의심 스럽습니다.