线程变量

在C语言中,如果函数使用的变量或内存均为栈变量,则函数可以充分保证线程的并行执行,但栈变量的生命周期却很短,无法广泛适用于并行编程的指导建议!

如果你想每个线程使用的变量或存储区域,在内存分配上类似栈,每个线程使用时为独立内存,但变量生命周期又类似到静态变量可以长期存在,那么将可以在很大程度上避免全局变量或静态变量的线程安全问题,如果有这种需求,线程变量将是利器!

// linux platform
static __thread int s_abBuf[256];
void f()
{//some code using s_abBuf
...
}

唯一存在的多线程弱点,就是不同函数,在同一个线程内的重入 问题,需要避免,其它将很方便!

 const char* formatTypeToStr(TypeVale a){  static __thread abBuf[256];//第一次使用初始化,也能够//some code using sp_abBuf...return abBuf;}
// invalid usage ,will print the last value in storage !!!
printf("Type1 Name:%s",Type2 Name:%s\n", formatTypeToStr(type1), formatTypeToStr(type2))

另外一个线程变量使用上惯用法,线程变量不允许占用段内存区域过多。如果存在因为线程变量使用,而导致程序无法使用的异常,那么可以用变量的指针作为线程变量,但存储区域放入无限量供应的堆区!

 static __thread int* sp_abBuf;void f(){  //第一次使用初始化,也能够保证线程安全if(sp_abBuf == NULL){sp_abBuf = malloc(BIG_SIZE);}//some code using sp_abBuf...}

结束语

在c++中也对应提供了thread_local的变量声明类型,如果有对应多线程并行编程的使用场景,也可以尽情使用!

C语言多线程并行的利器之线程变量相关推荐

  1. 易语言多线程启动方式许可证显示线程信息

    通过创建许可证,来显示线程的启动信息,便于了解线程情况. 511遇见易语言多线程大漠多线程 代码: .版本 2 .支持库 EThread.子程序 子程序1 .参数 参数 .局部变量 n编辑框2.内容 ...

  2. 易语言多线程任务分配让不同的线程账号执行不同的多个任务

    多线程,我们更多是用来让不同的线程做相同的事情,如果让不同的线程执行不同的任务,并且每个线程任务的数量也不一样,还可以自由的添加任何数量的任务,那么下面的教程解决了这个问题,包括多线程分配单个不同的任 ...

  3. 易语言多线程大漠多线程进程线程多线程

    进程-线程-多线程 1.进程(process) 狭义定义:进程就是一段程序的执行过程 简单的来讲进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域( ...

  4. linux下c语言线程传参数,【linux】C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...

    C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0 本贴问题,之前已经提问过一次,当时已经解决了,原贴在这里https://segmentfault.com/q/1 ...

  5. 易语言多线程封装线程启动返回句柄

    封装多线程模块-线程启动 • 1.CreateThread • 2.线程_启动_句柄() • 3.线程_启动_逻辑() • 4.线程句柄 • 5.线程ID • 6.易语言SHCreateThread ...

  6. 易语言多线程Api封装线程挂起恢复销毁

    封装多线程模块-api-线程的挂起和恢复销毁 强制杀死或挂起线程会导致线程正在获取的锁资源无法释放:如果正在操作一块公共内存,可能会导致公共内存被破坏. 一.SuspendThread 在实际环境中, ...

  7. 易语言多线程大漠多线程脚本主副线程

    在大漠多线程模板中,脚本副线程的作用主要是一个监控线程,可以监控游戏窗口是否存在,游戏是否卡屏,是否掉线,当然你可以用来进行游戏里的其他检测监控. 511遇见易语言多线程大漠多线程 大漠多线程主副线程 ...

  8. 易语言多线程封装线程启动优先权设置

    线程启动-设置优先级 1.SetThreadPriority 2.ResumeThread 模块源码: .子程序 线程_启动_优先权, 整数型, 公开, 返回线程句柄,必须用 线程_关闭_句柄()关闭 ...

  9. 易语言多线程Api封装线程等待CPU优化

    API-线程等待CPU优化 用到的API 1.MsgWaitForMultipleObjects 2.WaitForSingleObject 3.SetThreadAffinityMask 4.Set ...

最新文章

  1. Python 2.7 学习笔记 内置语句、函数、标准库
  2. pat天梯赛L2-025. 分而治之
  3. html鼠标悬停区域拉伸,html – :将鼠标悬停在具有边框半径的div上
  4. ubuntu安装时发现GPT分区表,无法安装问题
  5. [原]openstack-kilo--issue(十八) Error parsing template file: Template format version not found.
  6. 吴恩达深度学习 —— 4.3 核对矩阵的维数
  7. 如何使用STVP_CmdLine.exe
  8. 【Python量化】蒙特卡洛模拟法进行期权定价
  9. docker 安装Mysql并设置自启动
  10. 毕索大学计算机科学怎么样,毕索大学的计算机硕士如何
  11. 学习笔记——共阳数码管的动态显示
  12. 水下SLAM论文!!!
  13. proftpd 530 Login incorrect
  14. 【运筹优化】元启发式算法详解:模拟退火算法(Simulated Annealing,SA)+ 案例讲解代码实战
  15. 企业微信视频教程(Java标准版)-翟东平-专题视频课程
  16. 并发编程之Disruptor框架介绍和高阶运用
  17. python求素数因子_Python入门教程: 素数判断与素因子分解
  18. Android自定义之仿360Root大师水纹效果
  19. 90后小伙用果酱画画:花鸟鱼虫活灵活现(图)
  20. 电子商务html语言及特点,南开18秋学期(1703)《电子商务网页制作》在线作业答案...

热门文章

  1. 企业 dns 服务器搭建
  2. Java笔记:抽象类和接口
  3. Thinking in BigData(五)大数据之统计学与数据挖掘
  4. 台达DVP PLC与3台台达VFD-M变频器通讯程序
  5. 计蒜客习题3:堆积木(vector)STL
  6. 数字化门店拓客营销引流系统
  7. 前端人员如何在页面中导入外部字体
  8. 西电毕业论文Latex排版教程
  9. Eth-Trunk链路聚合理论
  10. 模拟CMOS集成电路设计入门学习(8)