2012-05-04 19 views
14

Tài liệu của Apple nói rằng nếu bạn đặt thuộc tính maxConcurrentOperationCount của NSOperationQueue thành NSOperationQueueDefaultMaxConcurrentOperationCount (mặc định) thì nó sẽ điều chỉnh giá trị tại thời gian chạy dựa trên "điều kiện hệ thống".NSOperationQueueDefaultMaxConcurrentOperationCount trong tự nhiên

Nếu bạn chỉ định giá trị NSOperationQueueDefaultMaxConcurrentOperationCount (được khuyến khích), số lượng tối đa các hoạt động có thể thay đổi động dựa trên điều kiện hệ thống.

Ai có thể báo cáo những gì họ thấy rằng giá trị được đặt ở chế độ hoang dã trên các thiết bị khác nhau không? Có phải chúng ta đang nói 1 hoặc 2 cho điện thoại cũ và 3-4 cho các mô hình mới hay 10 hoặc ?? Nó không đưa ra bất kỳ thông tin chi tiết nào về tập hợp khả năng hoặc kết quả phổ biến nhất. Tôi nghĩ nó sẽ hữu ích cho các nhà phát triển để biết những gì mong đợi xảy ra trong sản xuất, thay vì chỉ chúng tôi sẽ chăm sóc nó mà không có bất kỳ lời giải thích về những gì họ đang tối ưu hóa (UI đáp ứng, tốc độ thực hiện hoạt động, vv).

Trả lời

6

Như đã nói trong nhiều biến thể và tài nguyên khác nhau (for instance), bạn không bao giờ biết bạn cần tạo bao nhiêu luồng cho luồng công việc của ứng dụng của bạn.

Đó là vấn đề về thời gian của CPU và tải bao nhiêu luồng mà ứng dụng của bạn cần (vì nó không đơn độc trong rừng). Vì vậy, câu trả lời là:

  1. tối ưu hóa cho số lượng lõi
  2. tối ưu cho kiến ​​trúc CPU
  3. tối ưu hóa cho tải CPU hiện tại
+1

NSOperationQueueDefaultMaxConcurrentOperationCount một số lần cho phép hàng đợi để tạo bao nhiêu đề khi nó trở nên khó khăn cho ứng dụng iOS để quản lý chúng. Tôi nhận được SIGABRT do số lượng các chủ đề đang chạy trong khi sử dụng NSOperationQueueDefaultMaxConcurrentOperationCount.NO ý tưởng tại sao rất nhiều hoạt động đang được tạo ra. –

+0

@devgr cố gắng đặt điểm ngắt và may mắn khi gỡ lỗi. Bạn có thể tìm kiếm các câu hỏi tương đối, hoặc yêu cầu giúp đỡ trong một câu hỏi mới chỉ cho nhu cầu của bạn. –

Các vấn đề liên quan