线程存储函数的使用
来源:互联网 发布:cad迷你看图mac版免费 编辑:程序博客网 时间:2024/06/05 21:10
线程存储函数的使用比较简单,这里只记录一下用例代码:
<pre name="code" class="cpp">#include <gmock/gmock.h>#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <string>class ThreadLocalTest : public testing::Test{public:void SetUp(){}void TearDown(){}};struct Person{int age;std::string name;};pthread_key_t key;void *func1(void* arg){#if 0{///< 在此作用域内创建的线程存储对象,外面无法访问Person bobo;bobo.age = 23;bobo.name = "bobo";pthread_setspecific(key, &bobo);printf("func1 person address : %p\n", &bobo);}///< 覆盖 bobo 对象占用的内存Person test;#endifPerson bobo;bobo.age = 23;bobo.name = "bobo";pthread_setspecific(key, &bobo);printf("func1 person address : %p\n", &bobo);printf("func1 thread local person address : %p\n", (Person*)pthread_getspecific(key));printf("func1 person age : %d, person name : %s\n", ((Person*)pthread_getspecific(key))->age, ((Person*)pthread_getspecific(key))->name.c_str());return NULL;}void *func2(void* arg){Person huihui;huihui.age = 24;huihui.name = "huihui";pthread_setspecific(key, &huihui);printf("func2 person address : %p\n", &huihui);printf("func2 thread local person address : %p\n", (Person*)pthread_getspecific(key));printf("func2 person age : %d, person name : %s\n", ((Person*)pthread_getspecific(key))->age, ((Person*)pthread_getspecific(key))->name.c_str());return NULL;}TEST_F(ThreadLocalTest, ThreadLocalTestOne){pthread_t t1, t2;pthread_key_create(&key, NULL);pthread_create(&t1, NULL, &func1, NULL);pthread_create(&t2, NULL, &func2, NULL);pthread_join(t1, NULL);pthread_join(t2, NULL);pthread_key_delete(key);}
0 0
- 线程存储函数的使用
- 线程局部存储(TLS)的使用
- TLS线程局部存储的使用
- 创建线程的函数使用
- 正确得到线程退出信息的方法详解-变量存储退出信息结构、使用动态存储的方式退出信息结构、使用全局变量方式推相互信息结构、使用main函数中的局部变量存储退出信息结构
- 使用OTL调用Oracle的存储函数
- 使用OTL调用Oracle的存储函数
- 使用OTL调用Oracle的存储函数
- 线程中函数处理使用的方法
- CloseHandle()函数(关闭线程句柄)的使用
- 线程中 CloseHandle()函数的使用
- 线程中 CloseHandle()函数的使用
- 创建线程函数的使用注意事项
- 线程的分离状态 pthread_attr_setdetachstate 函数使用
- CloseHandle()函数(关闭线程句柄)的使用
- 线程特定数据函数的使用
- 线程的清理函数使用及介绍
- 线程的分离状态 pthread_attr_setdetachstate 函数使用
- 在项目开发过程中的版本控制
- ubuntu安装jdk
- innerHTML在IE与FF、chrome、opera浏览下获取的HTML标称名大小写不一样
- Hibernate-HQL、Criteria、SQL实现查询对照以及增删改
- mysql 基础安装
- 线程存储函数的使用
- MFC中,Unicode和多字节字符集下 CString和char的转化
- ANDROID安卓activity与fragment,activity之间互相传值(四)
- 从Redis缓存服务器获取省市信息
- 区域分裂与合并matlab程序
- 视频直播资源
- 闭包的一个坑
- 游戏背景模糊层
- 往届题目—啤酒与饮料