`
fanrey
  • 浏览: 255044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

POSIX线程私有数据

 
阅读更多
在JAVA中是使用ThreadLocal来实现线程特定数据。POSIX中操作线程私有数据的主要通过以下4个函数来实现:pthread_key_create(创建一个键),pthread_setspecific(为一个键设置线程私有数据),pthread_getspecific(从一个键读取线程私有数据),pthread_key_delete(删除一个键)。这几个函数的声明如下:

#include <pthread.h>
int pthread_key_create(pthread_key_t *key,void (*destr_function)(void *));
int pthread_setspecific(pthread_key_t key,const void *pointer));
void *pthread_getspecific(pthread_key_t key);
int pthread_key_delete(pthread_key_t key);


测试代码:
//pthread_data2.c
#include <stdio.h>
#include <string.h>
#include <pthread.h>
pthread_key_t key;
void * mythread(void* arg){
	int tsd = *(int*)arg;
	printf("thread %d is running\n",pthread_self());
	pthread_setspecific(key,(void *)tsd);
	int i = 0;
	for(i=0; i<5; i++){
		printf("thread %d returns %d\n",pthread_self(),pthread_getspecific(key));
		sleep(1);
	}
}
int main(void){
	pthread_t thid1;
	pthread_t thid2;
	printf("main thread begins running\n");
	pthread_key_create(&key,NULL);
	int i = 100;
	pthread_create(&thid1,NULL,mythread,&i);
	int j = 200;
	pthread_create(&thid2,NULL,mythread,&j);
	sleep(5);
	pthread_key_delete(key);
	printf("main thread exit\n");
	return 0;
}


编译:gcc -o pthread_data2 pthread_data2.c -l pthread
运行:
./pthread_data2
main thread begins running
thread -1216165008 is running
thread -1216165008 returns 100
thread -1224557712 is running
thread -1224557712 returns 200
thread -1216165008 returns 100
thread -1224557712 returns 200
thread -1224557712 returns 200
thread -1216165008 returns 100
thread -1224557712 returns 200
thread -1216165008 returns 100
thread -1224557712 returns 200
thread -1216165008 returns 100
main thread exit
分享到:
评论

相关推荐

    POSIX多线程程序设计.pdf

    然后讨论了一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的问题,并给出了避免错误和提高性能等问题的有价值的建议。本书使用了大量注释过后 实例来解释实际的概念,并包括Pthreads...

    POSIX多线程程序设计

    然后讨论了, 一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的问, 题,并给出了避免错误和提高性能等问题的有价值的建议。本书使用了大量注释过的实例, 来解释实际的概念,并包括...

    Posix线程(经典)

    线程数据是被用来存储线程私有数据的。它像全局变量,能被某个线程调用的所有函数访问,但却是线程私有的,只能被特定线程访问。每一个线程数据项都有一个键和它相关联,这个键对所有的线程都是一样的,但在不同的...

    Posix线程编程指南

    该指南将详细介绍POSIX线程编程的基本知识点,包括线程创建、线程间通信、线程取消、线程私有数据、线程同步、线程终止和杂项函数等内容。 线程与进程是操作系统中两种不同的执行流。进程是资源管理的基本单位,而...

    Posix_线程编程指南

    《Posix_线程编程指南》这篇文档是一篇关于POSIX线程(简称pthread)编程的详细指南,涉及到多个方面的知识点,包括线程创建与管理、线程取消、线程私有数据、线程同步、线程终止等。以下将对这些知识点进行详细说明...

    POSIX线程相关资料打包

    POSIX线程,通常简称为pthreads,是操作系统接口(POSIX)标准的一部分,它定义了一个多线程API,允许程序创建和管理多个执行线程。这个标准在各种Unix和类Unix系统,如Linux和macOS中得到广泛支持。本文将深入探讨...

    POSIX多线程程序设计中文版

    一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的问 题,并给出了避免错误和提高性能等问题的有价值的建议。本书使用了大量注释过的实例 来解释实际的概念,并包括Pthreads

    Posix多线程程序设计(中文版)pdf

    在高级编程技巧方面,POSIX线程提供了包括线程特性和线程私有数据等工具。线程特性能让程序员设置线程的行为,包括线程的堆栈大小和调度策略。线程私有数据允许每个线程拥有自己的私有数据副本,这些数据不会被其他...

    POSIX多线程设计

    本书深入描述了 IEEE人开放系统接口标准 POSIX 线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步...然后讨论了一些高级话题,包括属性对象,线程私有数据和实时调试。

    Posix线程编程指南.rar

    线程私有数据 3.1概念及作用 3.2创建和注销 4.线程同步 4.1互斥锁 4.1.1 创建和销毁 4.1.2互斥锁属性 4.1.3锁操作 4.1.4其他 4.2条件变量 4.2.1创建和注销 4.2.2等待和激发 ...

    Posix多线程编程[总结].pdf

    线程包含了表示进程内执行环境必需的信息,其中包括进程中标识线程的线程ID,一组寄存器值、栈、调度优先级和策略、信号屏蔽子、errno 变量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可...

    posix多线程编程

    POSIX线程库(pthread)为Linux下的多线程编程提供了一套完整的工具集,包括线程创建与管理、线程间同步(如互斥锁和条件变量)、线程特定数据、线程取消与终止等高级功能。掌握这些知识不仅能够帮助开发者构建高...

Global site tag (gtag.js) - Google Analytics