[英]Is shared library local variable thread safe?
我正在開發一個多線程應用程序,該應用程序將訪問共享庫,現在我看到共享庫不包含任何全局變量,這是否意味着該庫是線程安全的? 例如。
我正在從各個線程調用函數func()
到共享庫,例如:
線程1-> func()
線程2-> func()
...
線程N-> func()
並且func()定義如下,
void func(){
int var;
func2(&var);
}
在這種情況下,它是線程安全的嗎?
您所顯示的用法是線程安全的,因為從每個線程進行的func
調用將具有變量var
的副本。
但是,由於以下幾個原因,這不能保證:
static
變量的使用。 如果將int var
替換為static int var
, func
將不再是線程安全的 strtok
。 使用這些功能會使您的庫不是線程安全的。 是的,有問題的代碼將在每個線程的上下文中執行,並且本地自動變量通常將存儲在每個線程的堆棧中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.