2009-05-27 5 views
8

저는 C#에서 일반적인 Producer/Consumer 쌍 + 처리 대기열을 재미있게 구현하는 아이디어를 가지고 놀고 있습니다. 아이디어는 적절한 델리게이트로 구성되어 적절한 QueueProcessor 클래스 인스턴스로 전달하고 원하는 소비자 수를 알려주고 이동하는 적절한 IProducer 및 IConsumer 인터페이스 (기본 구현 제공)를 구현하는 객체를 만들 수 있다는 것입니다.일반 .Net Producer/Consumer

그러나 나는 스스로에게 말한다. "자아, 분명히 이것은 이전에 행해졌습니다."

그래서 사람이 알고 않는 좋은, C#에서 생산자/소비자 패턴의 일반적인 구현 (VB.Net도 괜찮습니다)? 내가 찾고 기본 요구 사항 :

  • 를 사용하여 생성 및 소비 유형에 대한 제네릭
  • 당신이 일을 얼마나 많은 소비자가 지정 허용 (입력, 작업 및 출력 형식, 또는 이들의 임의의 조합을 대기) 큐
  • 이 자신의 생산자와 소비자
  • 당신이 프로듀서로 어떤을 IEnumerable을 사용하도록 허용을 (구현할 수 있도록 당신이 링크 또는 파이프 라인에 체인 여러 큐 (다수의 소비자와 까다로운가, 내가 아는) 허용 좋아, 나 자신을 구현해야한다면 오래 걸릴거야.) 가능
  • 위임 기반 (당신이)

을 단일 항목을 처리 할 기본적인 소비자 또는 생산자 작업 람다 구문을 사용할 수 있습니다 또는 존재하지 않는 경우는, 어떤 함정이 막았을하고 당신이 어떤 생각을해야합니까 그것을 구현하는 방법?

+0

http://msdn.microsoft.com/en-us/library/dd267312.aspx를 보셨습니까? – porges

+0

예, IProducerConsumerCollection 등이 있지만 처음 질문했을 때는 아직 존재하지 않았습니다. 4.0에서 지원에 대한 게시물을 작성하면 쉽게 upvote 얻을 것이다. –

+0

아! 나는 어떻게 이런 일이 계속 일어나는지 모르겠다 ... 나는 항상 2 년 된 포스트에서 끝나고있다. P – porges

답변

5

Microsoft CCR에는 필요한 항목이 많이 포함되어 있습니다.

Here은 몇 가지 코드 샘플 및 사용법 참고 사항입니다.

+0

나는 _new_이 어딘가에 이미 거기에 있어야했다. –

+0

완벽한 프레임 워크는 아니지만 처리를 중지하는 기능과 남은 작업을 대기하는 기능과 같은 확실한 기능이 부족합니다. 더 많은 도움이 필요하면 Google 팀의 프레임 워크를 개선하고 있습니다 ... – ripper234

0

MiscUtil을 보았습니까?

+0

내가 묻고있는 것을 그곳에 보이지 않습니다. –

+0

거기에 내가 이것을 구현하는 데 매우 유용한 몇 가지 것을 보지 못했을 것입니다. –

+0

그럼 당신은 당신이 거기에 시간에 그 위로 거기에 어떤 향상을 가하고있을거야 ... : P –

2

Marc Gravell은 this answer에 멋진 블로킹 큐를 작성했습니다.

관련 문제