线程共享内存空间的代码验证

线程默认共享数据段、代码段等地址空间,常用的是全局变量。
在这里插入图片描述

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

int g_data=0;

void *func1(void *arg)
{
        printf("t1:%ld thread is create\n",(unsigned long)pthread_self());
        printf("t1:param is %d\n",*((int *)arg));
        while(1){
                printf("t1:%d\n",g_data++);
                sleep(1);
        }
}

void *func2(void *arg)
{
        printf("t2:%ld thread is create\n",(unsigned long)pthread_self());
        printf("t2:param is %d\n",*((int *)arg));
        while(1){
                printf("t2:%d\n",g_data++);
                sleep(1);
        }
}
int main()
{
        int ret;
        int param=100;
        pthread_t t1;
        pthread_t t2;

        ret=pthread_create(&t1,NULL,func1,(void *)&param);
        if(ret==0){
                printf("main:create t1 success\n" );
        }

        ret=pthread_create(&t2,NULL,func2,(void *)&param);
        if(ret==0){
                printf("main:create t2 success\n" );
        }

        printf("main:%ld\n",(unsigned long)pthread_self());

        while(1){
                printf("main:%d\n",g_data++);
                sleep(1);
        }

        pthread_join(t1,NULL);
        pthread_join(t2,NULL);
        return 0;
}

运行结果,可以看到全局变量g\_data一直在累加
在这里插入图片描述

标签: Linux, 线程, int, printf, 共享内存, pthread, create, t1, t2

相关文章推荐

添加新评论,含*的栏目为必填