[英]Local static variable and multithreading — is it safe?
如果我有
pthread_create(newThread, &attr, threadFunc, arg)
這是多次調用創建運行的線程threadFunc
和threadFunc
是一樣的東西:
void threadFunc(){ static int x = 0; }
這個x
變量是否在所有線程之間共享? 我知道它不在線程的堆棧中,因為它是靜態的,它位於全局變量所在的位置。 如果沒有,並且每個線程都有自己的x
,則不需要鎖-是嗎?
不,它不是線程安全的, x
是所有線程之間共享。 此外,不能保證對C中int
進行的操作是原子的。
所有使用threadFunc
作為其啟動例程的線程都共享該靜態x
。 如果希望每個線程都有該x
的副本,則應使用特定於線程的數據 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.