线程局部存储分析

在Linux C/C++编程时不可避免的会遇到以下的需求,全局变量线程共享;最为典型的功能则是errno,变量 在程序的任何地方都可以访问,但是不会影响到其他线程,这就是本文档说明的TLS(线程局部存储变量)

pthread线程同步

高级锁的实现都是与futex实现相关

FutexFast Userspace muTexes的缩写

常用的锁都是通过futex实现的

  • mutex (互斥锁)
  • rwlock (读写锁)
  • cond (条件变量)
graph LR
    atom[原子操作] --> spin[自旋锁]
	futex --> mutex[互斥锁]
	futex --> rwlock[读写锁]
	futex --> cond[条件变量]

编译原理

词法分析是编译原理的第一个阶段,词法分析的任务是读入源程序的输入字符,生成一个个的单词,其主要的功能是为语法分析提供词法单元

graph LR

S1((源程序))
S2[词法分析器]
S3[语法分析器]
S4((符号表))
S5[输出之语义分析]

S1-->S2-->S3-->S5

S3-->S2

S2-->S4
S4-->S2

S3-->S4
S4-->S3
  • 对于给定的正则表达式 $\Sigma$={c1, c2, c3…cn}
  • 归纳定义:
    • 对于空串是正则表达式$\epsilon$是正则表达式
    • 对于任何$c\in\Sigma$,$c$是正则表达式
    • 如果M和N都是正则表达式,那么下面的也是正则表达式
      • 选择: M | N = {M, N}
      • 连接: MN = {mn| m $\in$ M, n, $\in$ M }
      • 闭包: M* = {$\epsilon$, M, MM, MMMM….}

使用flex学习正则表达式

C++模板

gcctypeof关键字用来检查变量类型,那么则可以用来判断魔板生成中的数据类型, 但是在C++中存在这另外的运算符typeid,但是我个人认为typeof更加优秀,但是二者并不相同, typeid返回类型对象,typeof只可以判断类型;