今天看这篇文章,感觉临界区和互斥锁效果差不多,都是锁住一段代码,只让一个线程访问,不知道有什么区别。。。
C语言多线程基础-02-临界区,互斥量
区别:
1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。
2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。
3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用(Linux下只能用锁)
参考文章:临界区和互斥锁的区别
关于进程间的互斥体(互斥锁),我不太明白,可以参考这篇文章:
它是用共享内存的方式实现的,在调用pthread_mutex_init()
函数时,第二个参数需要传入一个属性对象(状态对象)的地址
而锁需要定义在共享内存上,关于共享内存的创建,可以参考这篇文章:
Linux共享内存 封装
另外,可见补充知识:
LINUX进程变量隔离 虚拟地址