Giả sử tôi có hai tài nguyên, được đặt tên 0
và 1
, chỉ có thể được truy cập riêng.
Có cách nào để khôi phục "chỉ mục" của "bộ xử lý song song" xargs
khởi chạy để sử dụng nó như một dịch vụ loại trừ lẫn nhau miễn phí không? Ví dụ, hãy xem xét tính toán song song sau đây:
$ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {}"
consuming task 1
consuming task 2
consuming task 3
consuming task 4
consuming task 5
consuming task 6
consuming task 7
consuming task 8
Câu hỏi của tôi là liệu có tồn tại một từ ma thuật, giả sử index
, nơi đầu ra sẽ trông như thế nào
$ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {} with resource index"
consuming task 1 with resource 0
consuming task 2 with resource 1
consuming task 3 with resource 1
consuming task 4 with resource 1
consuming task 5 with resource 0
consuming task 6 with resource 1
consuming task 7 with resource 0
consuming task 8 with resource 0
trong đó đảm bảo duy nhất là chỉ có tối đa một quy trình sử dụng tài nguyên 0
và tương tự cho 1
. Về cơ bản, tôi muốn truyền đạt chỉ số này xuống quy trình con sẽ tôn trọng quy tắc chỉ sử dụng tài nguyên mà nó được yêu cầu.
Tất nhiên, tốt hơn là nên mở rộng tài nguyên này đến hơn hai tài nguyên. Kiểm tra các tài liệu, xargs
có lẽ không thể làm điều này. Có một giải pháp tương đương tối thiểu? Sử dụng / làm sạch các tập tin như khóa giả là không thích hợp.