Tôi đang xây dựng một ứng dụng ripper CD trong C++ và Qt. Tôi muốn song song ứng dụng sao cho nhiều bản nhạc có thể được mã hóa đồng thời. Do đó, tôi đã cấu trúc ứng dụng theo cách mã hóa một bản nhạc là "Tác vụ" và tôi đang làm việc trên một cơ chế để chạy đồng thời một số nhiệm vụ này. Tôi có thể, tất nhiên, thực hiện điều này bằng cách sử dụng các chủ đề và viết hàng đợi nhiệm vụ của riêng tôi hoặc người quản lý công việc, nhưng tôi nghĩ rằng khối xây dựng luồng của Intel (TBB) có thể là một công cụ tốt hơn cho công việc. Tôi có một vài câu hỏi, tuy nhiên.Luồng xây dựng luồng (TBB) cho trình rip CD dựa trên Qt?
- Đang mã hóa tệp WAV thành tệp FLAC, Ogg Vorbis hoặc Mp3 có thể hoạt động tốt như một tác vụ tbb ::? Tài liệu hướng dẫn nói rằng "nếu chuỗi chặn thường xuyên, sẽ mất hiệu suất khi sử dụng công cụ lên lịch tác vụ". Tôi không nghĩ rằng nhiệm vụ mã hóa của tôi sẽ chặn cho mutexes thường xuyên, nhưng sẽ cần phải truy cập đĩa tương đối thường xuyên, vì họ phải đọc dữ liệu WAV từ đĩa để mã hóa. Mức độ hoạt động của đĩa có vấn đề theo nghĩa được mô tả trong hướng dẫn này không?
- TBB có hoạt động tốt với Qt không? Khi sử dụng các luồng Qt, bạn có thể sử dụng cơ chế tín hiệu/khe của Qt một cách minh bạch trên các luồng. Sẽ là đúng nếu tôi đã sử dụng tbb :: nhiệm vụ thay vì chủ đề Qt? Sẽ có bất kỳ "gotchas" khác?
Cảm ơn bạn đã cung cấp thông tin chi tiết.