của Apple dẫn Threading nói:Có cách nào để vào chế độ đa luồng cacao mà không tạo NSThread giả không?
Đối với các ứng dụng đa luồng, các khuôn khổ Cocoa sử dụng ổ khóa và các hình thức đồng bộ hóa nội bộ để đảm bảo chúng hoạt động một cách chính xác. Để ngăn chặn các ổ khóa từ hiệu suất xuống cấp trong trường hợp đơn luồng, tuy nhiên, Cocoa không tạo ra chúng cho đến khi ứng dụng sinh ra luồng mới đầu tiên của nó bằng cách sử dụng lớp NSThread. Nếu bạn sinh ra các luồng chỉ sử dụng các thủ tục luồng POSIX, Cocoa không nhận được các thông báo cần biết rằng ứng dụng của bạn hiện đa luồng. Khi điều đó xảy ra, các hoạt động liên quan đến khung công tác Cocoa có thể làm mất ổn định hoặc làm hỏng ứng dụng của bạn.
Để cho Cocoa biết rằng bạn dự định sử dụng nhiều luồng, tất cả những gì bạn phải làm là tạo ra một chuỗi đơn bằng cách sử dụng lớp NSThread và để cho chuỗi đó thoát ngay lập tức. Điểm nhập chủ đề của bạn không cần làm gì cả. Chỉ cần hành động sinh sản một luồng bằng NSThread là đủ để đảm bảo rằng các khóa cần thiết bởi các khung công tác Cocoa được đưa ra.
Trong ứng dụng iOS của tôi, tôi đang bắt đầu một số pthreads từ mã C++ ngay từ đầu. Để đảm bảo ứng dụng hoạt động đúng, theo tài liệu ở trên, tôi tạo một NSThread giả mạo không thực hiện được gì. Tôi không thích tạo ra mã vô dụng như vậy (thường là WTF, khi bạn đọc nó lần đầu tiên) và tôi muốn tránh làm như vậy. Có cách nào tốt hơn để đưa ứng dụng của tôi vào chế độ đa luồng không?
Nó sẽ giúp để xem mã nơi bạn tạo NSThread. Bạn đang gọi "bắt đầu" trên chủ đề? – pzearfoss