线程间到底共享了哪些进程资源?
char c; // 全局变量
void func() {
}
void func(){
static int a = 10;
}
void thread(void* var) {
int* p = (int*)var;
*p = 2;
}
int main() {
int a = 1;
pthread_t tid;
pthread_create(&tid, NULL, thread, (void*)&a);
return 0;
}
存放在该区域中的变量是全局变量,所有线程都可以访问 虽然看上去所有线程访问的都是同一个变量,但该全局变量独属于一个线程,一个线程对此变量的修改对其他线程不可见。
int a = 1; // 全局变量
void print_a() {
cout<
}
void run() {
++a;
print_a();
}
void main() {
thread t1(run);
t1.join();
thread t2(run);
t2.join();
}
首先我们创建了一个全局变量a,初始值为1 其次我们创建了两个线程,每个线程对变量a加1 线程的join函数表示该线程运行完毕后才继续运行接下来的代码
2
3
__thread int a = 1; // 线程局部存储
2
2
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论