有时候因为业务需要,对某些非线程函数,比如mktime,需要使用互斥锁,可以参照example/blacklist-1或者channel_stats里面的用法
首先插件顶部声明
static TSMutex sites_mutex;
在TSPluginInit()中初始化
sites_mutex = TSMutexCreate();
在需要使用的地方,加锁和解锁
TSMutexLock(sites_mutex)

TSMutexLockTry(sites_mutex)
TSMutexUnlock(sites_mutex);
在哪里销毁?
会在该插件范围内永远使用,没有机会销毁,除非服务器退出,因为是静态的,创建对象不多,不好造成大的内存泄露

在channel_stats.cc搜索stats_map_mutex可以得到下面的调用位置

参考文献

[1].https://issues.apache.org/jira/browse/TS-3561

在ATS插件中使用互斥锁相关推荐

  1. Java中的互斥锁介绍

    前言   互斥锁是一种广泛应用于多线程编程中的并发控制机制.在Java中,互斥锁有很多不同的实现方式,在本文中我们将介绍Java中常见的几种互斥锁实现方式,并讲解它们的用法.原理和代码案例. sync ...

  2. 使用valgrind检测ATS插件中的内存泄露

    一.内存错误出现的场景 这几天在重构ATS插件代码的过程中遇到了烦人的内存泄露问题, 周五周六连续两天通过走查代码的方法,未能看出明显的导致内存错误的代码, 同时也觉得C和C++混合编程得到一个动态库 ...

  3. ATS插件中配置文件自动更新思路

    在ATS插件开发过程中,我们经常会需要如下业务需求: 某个插件的配置文件更新了,我们需要让新的配置文件生效,但是我们不想重启ATS.因为作为CDN行业的缓存服务器来说,很大部分缓存是直接使用内存存放的 ...

  4. golang中的互斥锁

    简介 每个资源都对应一个可称为"互斥锁"的标记,这个标记用来保证在任意时刻,只有一个协程(线程)访问该资源.其他的协程只能等待 由标准库sync中的Mutex结构体类型表示. sy ...

  5. Python多任务(4.多线程--Python中的互斥锁和死锁)

    互斥锁 1.互斥锁的概念 2.互斥锁的使用 3.使用互斥锁完成2个线程对同一全局变量各加100万次的操作,而不会出现问题 死锁 死锁的概念 避如何免死锁: 出现死锁的例子 互斥锁 1.互斥锁的概念 互 ...

  6. python中的互斥锁

    如果没有控制多个线程对同一资源的访问,对数据造成破坏,使得线程运行的结果不可预期.这种现象称为"线程不安全". 线程同步解决问题: 系统调用t1,然后获取到num的值为0,此时上一 ...

  7. 操作系统中的互斥锁与条件变量

    转自https://www.douban.com/note/226974753/ 与互斥锁不同,条件变量是用来等待而不是用来上锁的.条件变量用来自动阻塞一个线程,直到某特殊情况发生为止.通常条件变量和 ...

  8. 内核中的互斥锁的使用

    在内核中结构体struct mutex的定义 // include/linux/mutex.h/** Simple, straightforward mutexes with strict seman ...

  9. Python中的互斥锁和join的应用

    一丧"人生大部分的时候,都挺无聊的" 先说互斥锁的作用:lock互斥锁实现防止全局变量的互相争抢 做一个不太形象的比喻,你买了一个杯子(进程),你想喝混合口味的果汁,但是要自己做( ...

最新文章

  1. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?...
  2. 你应该知道的五种IO模型
  3. DVWA-暴力破解-对‘g0tmi1k’文章的学习笔记
  4. php 匹配多个字符串,php 字符串中是否包含指定字符串的多种方法
  5. cfiledialog 保存 扩展名_吃不完的红薯很难保存?教你一招,放1年不烂不发芽,简单实用...
  6. 一台mysql数据库服务器_在一台服务器安装多个MySQL数据库
  7. 【SQL Server 优化性能的几个方面】(转)
  8. 今日力推: Android 厨客APP / Android 趣刻App
  9. 21-7-28 git学习复习
  10. saltstack管理二之saltstack的安装
  11. java script特效_javascript 常用特效(40种)
  12. Nmap列举远程机器开放的端口
  13. uniapp:APP跳转小程序
  14. 微信登录显示连接失败,请检查网络
  15. 织梦免费网站模板手机端无法更新的原因及解决
  16. winXp 共享打印问题处理方法(终极版)
  17. 计算机科学导论第三版——第一章课后习题(贝赫鲁兹·佛罗赞BehrouzForouzan)(渐水问个人答案笔记csdn)
  18. 微软面试题--三个灯泡--三个开关
  19. CSDN蒋涛:从产品经理到通证设计师
  20. 各大电商平台API数据,包括淘宝天猫的api明细接口

热门文章

  1. Go 学习笔记(3)— 包概念、包特点、包名约束、main 包、包的声明、包的引用、包初始化
  2. 06章 映射一对多双向关联关系、以及cascade、inverse属性
  3. 在撤销“本地修改”之后再恢复
  4. DllImport dll中有些啥函数 及 dll中是否用到了别的dll
  5. Android 悬浮窗口
  6. R 语言爬虫 之 cnblog博文爬取
  7. php true true true,php-为什么此评估为true
  8. OpenCV+python:直方图的概念及绘制(Histogram)
  9. mysql正斜杠_MySQL中的正斜杠和反斜杠 | | 数据库系统概论(字符匹配)
  10. linux病毒木马分析,Linux平台“盖茨木马”分析