《Linux系统编程:线程私有数据》

本文介绍了在多线程编程中如何使用线程私有数据(Thread-specific Data,TSD),以实现线程间的全局变量隔离。通过`pthread_key_create`、`pthread_key_delete`、`pthread_setspecific`和`pthread_getspecific`四个函数,详细讲解了创建、注销、设置和读取线程私有数据的过程,并展示了示例代码及其运行结果,证明了线程私有数据能确保每个线程拥有独立的数据空间,避免相互干扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在多线程程序中,经常要用全局变量来实现多个函数间的数据共享。由于数据空间是共享的,因此全局变量也为所有线程共有。

测试代码如下:

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

int key = 100; //全局变量

void *helloworld_one(void *arg)
{
	printf("the message is %s\n",(char *)arg);
	key = 10;
	printf("key=%d, the child id is %lu\n", key, pthread_self());
	
	return NULL;
}

void *helloworld_two(void *arg)
{
	printf("the message is %s\n", (char *)arg);
	sleep(1);
	printf("key=%d, the child id is %lu\n", key, pthread_self());
	
	return NULL;
}

int main(int argc, char *argv[])
{
	pthread_t thread
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值