|
|
1
10
您只需要以独占方式访问共享数据。除非它们是静态的或在堆上,否则函数中的局部变量对于不同的线程将有不同的实例,不必担心。但共享数据(例如,通过指针访问的内容)应该首先锁定。
|
|
|
2
10
没错,在实现锁时,需要某种方法来保证两个进程不会同时获得锁。要做到这一点,你需要使用一个原子指令——一个保证无中断完成的指令。一个这样的指示是 test-and-set 这样做的目的是允许您编写代码,不断测试它是否能够获得锁。假设x是线程之间的共享变量:
|
|
|
3
4
函数中的普通局部变量已经特定于单个线程。只有静态数据、全局数据或其他数据可以由多个线程同时访问,并且需要有锁来保护它们。 |
|
|
4
0
操作锁的机构控制对锁的访问。 任何锁定原语都需要能够在处理器之间传递更改,因此它通常在总线操作之上实现,即读写内存。它的结构还需要确保两个试图声明它的线程不会破坏它的状态。这并不容易,但您通常可以相信,任何操作系统实现的锁都不会被多个线程损坏。 |
|
|
JLosc · Powershell脚本因文件锁定而失败 2 年前 |
|
|
Sriram Umapthy · PostgreSql行级锁 2 年前 |
|
|
a a · 为什么在这个可重入锁示例中需要引用计数? 4 年前 |
|
|
JohnLBevan · 为什么原子语句上需要锁提示? 8 年前 |