gcc 中__thread 关键字的示例代码
线程局部存储(tls)是一种机制,通过这一机制分配的变量,每个当前线程有一个该变量的实例.
注意:__thread 前面是两个_别闹错哦;
#include<iostream>
#include<pthread.h>
#include <unistd.h>
#define D "-----------------------------------------"
using namespace std; static __thread int a=; void *thread1(void *arg);
void *thread2(void *arg); int main()
{
pthread_t pid,pid1; pthread_create(&pid,NULL,thread1,NULL);
pthread_create(&pid1,NULL,thread2,NULL); pthread_join(pid,NULL);
pthread_join(pid,NULL); cout<<"main_a="<<a<<"\t"<<"addr_a="<<&a<<endl; } void *thread1(void *arg)
{
cout<<"I am thread1"<<endl;
cout<<"a="<<a<<"\t"<<&a<<endl;
sleep();
a=;
cout<<"thread1->a="<<a<<"\t"<<"add_a="<<&a<<endl;
cout<<D<<endl;
return NULL;
}
void *thread2(void *arg)
{ cout<<"I am thread2"<<endl; cout<<"a="<<a<<"\t"<<&a<<endl;
a=;
cout<<"thread2->a="<<a<<"\t"<<"add_a="<<&a<<endl;
cout<<D<<endl;
return NULL;
}
执行结果:
zn@zn:~$ ./a.out
I am thread2
a= 0x7f7912b4a6fc
thread2->a= add_a=0x7f7912b4a6fc
-----------------------------------------
I am thread1
a= 0x7f791334b6fc
thread1->a= add_a=0x7f791334b6fc
-----------------------------------------
main_a= addr_a=0x7f79144b473c
分析:
该程序为了测试这个关键字的作用;
介绍一下程序,
首先在一开始定义一个全局变量a=12,其次声明连个线程的回调函数这两个函数作用,
用于先打印一下a的值然后再改变在打印a的值,至于为什么这样做,是想验证一下他是不是写时拷贝,
然后主程序就是开辟两个线程并等待其完成最后再打印一下a的值及地址来确定主线程是否有影响;
最终分析:
通过结果我们可以看到这个关键字作用是,只要其他线程用它他会直接在自己的线程栈上创建该对象并保留其原有的值;
不会干扰其他线程中的该值;
gcc 中__thread 关键字的示例代码的更多相关文章
- jQuery中读取json文件示例代码
json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取,具体示例代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你 json文件是一种轻量级的数据交互格式.一 ...
- Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码
微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- linux日志中查找关键字、前几行、结尾几行,Linux的find用法示例
linux在日志中查找关键字.前几行.结尾几行,Linux的find用法示例 1.linux在日志中查找关键字.前几行.结尾几行 1.1查看日志 前 n行: 1.2查看日志 尾 n行: 1.3根据 关 ...
- php示例代码之类似于C#中的String.Format方法
php示例代码之类似于C#中的String.Format方法 原文来自于 http://stackoverflow.com/questions/1241177/c-string-format-equ ...
- Android中悬浮窗口的实现原理和示例代码
用了我一个周末的时间,个中愤懑就不说了,就这个问题,我翻遍全球网络没有一篇像样的资料,现在将实现原理简单叙述如下: 调用WindowManager,并设置WindowManager.LayoutPar ...
- SQL Server中Table字典数据的查询SQL示例代码
SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...
- [转] VS2015中跑OpenGL红宝书第八版的第一章示例代码,运行
Ori Article Link OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资 ...
- VS2015中跑OpenGL红宝书第八版的示例代码
OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资料终于跑起来了,记录一下 一.环境 ...
随机推荐
- UOJ#405. 【IOI2018】组合动作
原文链接https://www.cnblogs.com/zhouzhendong/p/IOI2018Day1T1.html 题解 首先二分一下,花费2次操作求出第一位的字符. 假设第一个字符是 Y,答 ...
- http动词解释及规范
GET:GET用于信息获取,而且应该是安全的和幂等的. 安全的意味着该操作用于获取信息而非修改信息,不管进行多少次操作,资源的状态都不会改变. 幂等的意味着对同一URL的多个请求应该返回同样的结果. ...
- pyqt pyside 设置窗口关闭时删除自身
pyqt pyside 设置窗口关闭时删除自身 self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
- Django运行访问项目出现的问题:DisallowedHost at / Invalid HTTP_HOST header
Django运行访问项目出现的问题:DisallowedHost at / Invalid HTTP_HOST header: DisallowedHost at / Invalid HTTP_HOS ...
- django——web框架简介
1.web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件. 应用程序有两种模式C/S.B/S.C/S是客户 ...
- Flutter: X Android license status unknown
Flutter 环境检测问题 资料 windows cmd C:\Users\ajanuw>flutter doctor -v [√] Flutter (Channel stable, v1.0 ...
- python 格式化向sql语句输出元组
想要往执行的sql语句里传入元组怎么办?尤其像insert 数据等操作,其实 利用"{}".format(tuple)固定格式传值即可 results = ((,,),(,,)) ...
- wordpress chronus主题 显示文章阅读数
wordpress chronus主题 显示文章阅读数 第一步:将下面的代码拷贝到文件 /wp-content/themes/chronus/inc/template-tags.php 中 funct ...
- 小甲鱼零基础python课后题 P24 023递归:这帮小兔崽子
0.使用递归写一个十进制转换为二进制的函数(要求“取2取余”的方式,结果与调用bin()一样返回字符串式). 答: def Dec2Bin(dec): temp = [] result = '' wh ...
- Nuxt.js调用asyncData
<template> <div> Index {{ username }} </div> </template> <script> expo ...