Tôi đã thực hiện một số re-entrancy guide về các thực tiễn được khuyến nghị khi viết mã lại.Thực tiễn được đề xuất cho mã tái nhập trong C, C++
Các tham chiếu và tài nguyên khác bao gồm chủ đề này?
Có thể sử dụng các công cụ giống như lint nào để kiểm tra các sự cố này?
Đó hướng dẫn khá nhiều có mọi thứ bạn cần biết. Nó không phải là một điều rất tinh tế. Không sử dụng dữ liệu mà bạn không được thông qua trong cuộc gọi hàm, không lưu trữ bất kỳ trạng thái nào trong hàm. –
Hướng dẫn đó có nhiều lỗi trong đó, từ định nghĩa về reentrancy thực sự là đa luồng (mặc dù các ví dụ xử lý tín hiệu là đúng reentrancy) thành lời khuyên xấu (mutexes ... hello deadlock) chỉ đơn giản là bugginess ('sigsuspend (& zeromask)'. Bạn vừa cho phép xử lý các ngắt mà người gọi của bạn đã vô hiệu hóa vì một lý do nào đó, hãy thử 'sigsuspend (& oldmask)' thay thế). –