Computer >> Máy Tính >  >> Lập trình >> C ++

Hàm reentrant trong C / C ++ là gì?

Ở đây chúng ta sẽ xem hàm reentrant trong C hoặc C ++ là gì. Một chức năng được cho là chức năng nhập lại nếu có điều khoản làm gián đoạn chức năng đó trong quá trình thực thi, sau đó phục vụ ISR (Quy trình dịch vụ ngắt) và sau đó tiếp tục tác vụ. Loại hàm này được sử dụng trong các trường hợp khác nhau như, đệ quy, xử lý ngắt phần cứng.

Đối với một chức năng reentrant nên có một số thuộc tính. Chúng được liệt kê bên dưới -

  • Loại hàm này sẽ không sử dụng bất kỳ biến toàn cục hoặc biến tĩnh nào. Không có hạn chế, nhưng nó thường không được khuyên. Điều này là do ngắt có thể thay đổi giá trị của biến toàn cục, vì vậy sau khi quay lại từ ISR, hàm có thể nhận một số giá trị mới và kết quả sẽ khác.

  • Hàm reentrant không được sửa đổi mã của chính nó. Chúng tôi cần hành động của hàm phải giữ nguyên trong suốt mã.

  • Một thuộc tính khác là hàm reentrant không được gọi bất kỳ hàm không reentrant nào khác.

Ví dụ

int x;
int my_function() {
   return x * 10;
}
int my_second_function() {
   return my_function() * 20;
}

Ở đây hai chức năng này không được sử dụng lại. Biến đầu tiên đang sử dụng một biến toàn cục, vì vậy nó không phải là biến được sử dụng lại. Hàm thứ hai đang gọi một hàm không đăng nhập lại, vì vậy, những hàm này cũng không phải là hàm đăng nhập lại.

Ví dụ

int my_function(int x) {
   return x * 10;
}
int my_second_function(int x) {
   return my_function(x) * 20;
}

Bây giờ hai hàm này là các hàm nhập lại.