簡體   English   中英

局部靜態變量和多線程-安全嗎?

[英]Local static variable and multithreading — is it safe?

如果我有

pthread_create(newThread, &attr, threadFunc, arg)

這是多次調用創建運行的線程threadFuncthreadFunc是一樣的東西:

void threadFunc(){      static int x = 0;      }

這個x變量是否在所有線程之間共享? 我知道它不在線程的堆棧中,因為它是靜態的,它位於全局變量所在的位置。 如果沒有,並且每個線程都有自己的x ,則不需要鎖-是嗎?

不,它不是線程安全的, x 所有線程之間共享。 此外,不能保證對C中int進行的操作是原子的。

所有使用threadFunc作為其啟動例程的線程都共享該靜態x 如果希望每個線程都有該x的副本,則應使用特定於線程的數據

暫無
暫無

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

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