일종의 파이프 라인을 실행하는 펄 스크립트를 작성하고 있습니다. 먼저 여러 매개 변수가 포함 된 JSON 파일을 읽습니다. 그런 다음 몇 가지 작업을 수행합니다. 나중에 주로 필요한 데이터 구조를 작성하고 참조로 유지되는 출력 파일을 생성하는 외부 프로그램을 호출합니다.다중 스레드 및 스레드 간 데이터 공유로 perl 스크립트 설계
일반적으로이 단계마다 서브 루틴을 사용합니다. 이러한 각 서브 루틴은 보통 다른 서브 루틴이 쓰지 않는 고유 한 장소 (즉, 해시의 특정 키)에 데이터를 기록하고 다른 서브 루틴이 생성 한 데이터를 읽습니다.
이 단계는 순차적으로 수행하면 몇 분이 걸릴 수 있지만 대부분은 스레드 및 대기열을 사용하여 처리하는 방법을 알고있는 몇 가지 간단한 종속성 논리와 함께 병렬로 실행할 수 있습니다. 그래서 어떻게 스레드간에 데이터를 공유 할 수 있도록 이것을 구현해야하는지 궁금합니다. 프레임 워크를 어떻게 제안 하시겠습니까? 아마도 하나의 인스턴스 만 가질 객체를 사용하고 모든 공유 데이터를 $self
에 보관 하시겠습니까? 아마도 일부 "전역"공유 변수가있는 간단한 스크립트 (개체 없음)가 있습니까? ...
나는 분명히 단순하고 깔끔한 솔루션을 선호합니다.
+1 Axeman에게 감사드립니다. (예를 들어'저장소 -> {키} ')가 변경되었을 때 전체 저장소를 잠글 필요가 있습니까? –
@David B, 예, 불행히도, 그것은 http://search.cpan.org를 참조하십시오./perldoc? threads :: shared # lock_VARIABLE – Axeman
"Perl 변수가 공유되지 않았습니다"어떤 취향에 따라 다르지 않습니다 http://perldoc.perl.org/Thread.html – Hawk