能力值:
( LV2,RANK:10 )
|
-
-
2 楼
单核根本没必要自旋锁
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
你好,我是看到书本提到 spinlock
所以才问,是不是会有问题?
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
倒不是阻止修改,应该说效率会降低。sleep(0)就是为了主动让出时间片
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
spinlock我记得有一个wait标志位用来同步的。然后在单核时wait=return,具体代码得找一下wrk,
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
由于CPU的任务执行是抢占式的,单核的spinlock只是提升LEVEL之后避免被其他任务切换,因此处理代码必须要简练,否则会影响整个系统的性能
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
你说的是另一个话题了,
有点跑题了。
我发帖讨论的是:
为什么单核下的旋转锁会导致阻止另一个线程修改锁。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
两种方式:
1.
while(interlockedexchagne(&g_flag, true) == true)
sleep(0);
2.
while(interlockedexchagne(&g_flag, true) == true); //空循环
第2种效率更低, 两种方式在单核下,都不会 阻止 另一个线程去修改 锁。
|
|
|