Linux教程

Linux系统编程—线程—线程共享内存空间的代码验证

本文主要是介绍Linux系统编程—线程—线程共享内存空间的代码验证,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

#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系统编程—线程—线程共享内存空间的代码验证的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!