Trong ví dụ này https://stackoverflow.com/a/9980346/93647 và tại đây Why is my disruptor example so slow? (ở cuối câu hỏi) có 1 nhà xuất bản xuất bản các mặt hàng và 1 người tiêu dùng.Ví dụ về gián đoạn với 1 nhà xuất bản và 4 người tiêu dùng song song
Nhưng trong trường hợp của tôi, công việc của người tiêu dùng phức tạp hơn nhiều và mất chút thời gian. Vì vậy, tôi muốn 4 người tiêu dùng xử lý dữ liệu song song.
Vì vậy, ví dụ nếu nhà sản xuất số sản phẩm: 1,2,3,4,5,6,7,8,9,10,11 ..
Tôi muốn consumer1 để bắt 1,5,9, ... consumer2 để bắt 2,6,10, ... consumer3 để bắt 3,7,11, ... consumer4 để bắt 4,8,12 ... (cũng không chính xác những con số này, ý tưởng là dữ liệu đó nên được xử lý song song, tôi không quan tâm một số nào đó được xử lý đối với người tiêu dùng nào)
Và nhớ điều này cần được thực hiện song song vì trong ứng dụng thực tế của người tiêu dùng khá đắt. Tôi mong đợi người tiêu dùng được thực hiện trong các chủ đề khác nhau để sử dụng sức mạnh của các hệ thống đa lõi.
Tất nhiên tôi chỉ có thể tạo 4 ringbuffers và đính kèm 1 người tiêu dùng vào 1 vòng đệm. Bằng cách này tôi có thể sử dụng ví dụ ban đầu. Nhưng tôi cảm thấy nó sẽ không chính xác. Có khả năng sẽ là chính xác khi tạo 1 nhà xuất bản (1 người đeo vòng) và 4 người tiêu dùng - vì đây là những gì tôi cần.
Thêm liên kết đến một câu hỏi rất simular trong nhóm google: https://groups.google.com/forum/#!msg/lmax-disruptor/-CLapWuwWLU/GHEP4UkxrAEJ
Vì vậy, chúng ta có hai lựa chọn:
- một vòng nhiều người tiêu dùng (mỗi người tiêu dùng sẽ "đánh thức" trên mỗi Thêm vào đó, tất cả người tiêu dùng nên có cùng WaitStrategy)
- nhiều "một vòng - một người tiêu dùng" (mỗi người tiêu dùng sẽ chỉ thức dậy trên dữ liệu mà nó sẽ xử lý. mỗi người tiêu dùng có thể có WaitStrategy riêng).
cảm ơn! sẽ thử! – javapowered
Bạn có biết nếu gọi đến nhạc chuông 'Next()' 'Phương thức Publish' có phải là chủ đề an toàn không? tôi có thể gọi chúng song song không? Tôi có thể gọi từ hai chủ đề khác nhau về phương pháp 'bẻ khóa' tiếp theo không? – javapowered
cũng làm thế nào disruptor làm cho nội bộ này? bao nhiêu chủ đề được tạo ra? làm gián đoạn tạo ra thread riêng biệt cho mỗi người tiêu dùng? hoặc một số loại threadpool được sử dụng? – javapowered