簡體   English   中英

使不可重入的函數可重入

[英]Making a non-reentrant function reentrant

我正在使用普通的舊c。

我有一個使用靜態局部變量的函數,因此是不可重入的。 我想刪除靜態本地的使用並使函數可重入。

有關如何執行此操作的任何提示或設計建議?

這個問題太模糊了嗎? 是否需要有關我目前正在使用的設計的更多詳細信息? 或者是否存在可以在這種情況下遵循的一般設計模式?

而不是使用靜態本地維護狀態,讓調用者將這些狀態變量作為參數傳遞給您的函數。 這意味着你的來電者必須保持狀態,但這通常是你想要的。

您可以使用以下解決方案之一保護您的代碼:

  1. MutexSemaphore與靜態變量一起使用。
  2. 在功能之前禁用中斷,在完成后啟用它。
  3. 禁用Multitas系統的調度。
  4. 使用局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM