如果我有
pthread_create(newThread, &attr, threadFunc, arg)
多次调用以创建运行threadFunc
的线程,而threadFunc
类似于:
void threadFunc(){ static int x = 0; }
这个x
变量是否在所有线程之间共享?我知道它不在线程的堆栈中,因为它是静态的,它位于全局变量的位置。
如果没有,并且每个线程都有自己的x
,则不需要锁定 - 是吗?
答案 0 :(得分:4)
不,它不是线程安全的,并且x
在所有线程之间共享。此外,C中int
的操作不能保证是原子的。
答案 1 :(得分:2)
使用x
作为启动例程的所有线程共享静态threadFunc
。如果您希望每个帖子都有x
的副本,则应使用thread-specific data。