Tôi hiện đang làm việc trên một ứng dụng đa luồng sẽ được triển khai trên kiến trúc cánh tay và ppc. Tôi đang gặp một số vấn đề với pthread_cancel trên cánh tay.pthread_cancel hoạt động khác trên cánh tay và ppc?
pthread_cancel trên cánh tay không hoạt động giống với ppc. Các chủ đề được hủy bỏ nhưng destructor cho biến địa phương của thread không được gọi là trên cánh tay. Tôi cũng đã cố gắng xác định rõ ràng quy trình xử lý xóa dọn dẹp được cài đặt thông qua pthread_cleanup_push. Nhưng nó không được gọi khi thread bị hủy bỏ.
Mã hoạt động tốt với ppc. Khi một luồng bị hủy, hàm hủy của biến cục bộ đang được gọi. Và khi tôi xác định rõ ràng một trình xử lý dọn dẹp, nó được gọi và thực thi khi pthread_cancel được gọi.
Tôi có thiếu gì đó không? Một số tùy chọn trình biên dịch có lẽ?
- Ngôn ngữ lập trình: C++
- Trình biên dịch: cánh tay-linux-g ++/powerpc-linux-g ++
- Hệ điều hành: Linux
EDIT:
Tôi đã tìm thấy một loại vấn đề tương tự đã đăng nhập vào số libc bug này.
Sử dụng gcc thay vì g ++ và thêm tùy chọn trình biên dịch không có ngoại lệ đã thực hiện thủ thuật. Nhưng tôi thực sự muốn hiểu những thứ đằng sau vấn đề này. Hơn nữa, -fno-exception có nghĩa là tôi sẽ không thể thực hiện xử lý ngoại lệ trong ứng dụng của tôi, không phải là tôi đang sử dụng nó bây giờ nhưng tôi có thể trong tương lai.
Cảm ơn.
Vui lòng chỉ định ngôn ngữ và trình biên dịch được sử dụng (cho cả hai nền tảng). Điều này nghe có vẻ như C++, nhưng nó là tốt hơn để được rõ ràng. – unwind
Nó cũng sẽ giúp bạn biết hệ điều hành nào là gói phần mềm thường là hệ điều hành cụ thể. – Benoit
Tôi cũng đề nghị liệt kê phiên bản chính xác của nhân Linux, mục tiêu hỗ trợ nền tảng được sử dụng trong mỗi trường hợp và các phiên bản của gcc/g ++, libc và bất kỳ phần mềm nào khác có liên quan. Nếu không có số phiên bản chính xác thì rất khó để có được lời khuyên tốt. – jakobengblom2