[英]How to detect thread-safe in your API?
通常,您需要像這樣extern
一些C API:
set_module_callback(module, some_func, func_args);
但是module
需要some_func
是線程安全的 ,即,可能有1個以上的線程來調用此函數,但是我不知道它是否是線程安全的 ,是否有某種方法可以在調用set_module_callback
進行測試?
線程安全是非常復雜的領域。 您可能會從許多方面感到不安全,即使受到良好保護的代碼也可能在與另一段代碼進行通信時出現漏洞。 這就是為什么最好假設some_func
是不安全的,並提供(例如)圍繞共享資源的關鍵部分。 所以答案是“不”
我看不到自動讓一些代碼測試另一段代碼的方法。
為了使您真正確定ti是線程安全的,您將必須進行研究/分析/分析其作用以及可能出現的副作用/在需要時添加互斥鎖。
如果您的應用程序是POSIX,則可以嘗試Helgrind工具 ,該工具可以進行一些並發訪問檢測。
但這取決於您的軟件如何調用API。 因此,如果是或否您的API是線程安全的,您將沒有一個絕對的一般答案。 給定特定的應用程序,您只會得到此答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.