我还找到了glibc pthread_spinlock实现,它使用程序集来执行锁。#define LOCK_PREFIX "lock;" // using an SMP machine
int pthread_spin_lock(pthread_spinlock_t *lock)但是,我对boost spinlock和glibc pthread_spinlock进行了一些测试,当内核多于线程时,boost代码的性能优于glibc代码。
我正尝试在vxWorks 6.7中使用spinlockIsr_t,但是如果我尝试在多个任务中使用它,系统就会冻结。您是否允许使用多个任务来尝试获取相同的自旋锁?如果不是,那么首先它的意义是什么?下面的代码可以处理1或2个任务,但是一旦任务数增加到3个,系统就会死机,然后才能在控制台上完成第一行打印。int sharedResource;{ const int kTaskPriority = 50;
c
使用Thread.BeginCriticalRegion反射器,我发现SpinLock结构有很多调用.NET而不调用Thread.EndCriticalRegion.的情况例如,在公共函数SpinLock.Enter在另一种情况下,Thread.EndCriticalRegion似乎没有调用Thread.BeginCriticalRegion.就调用了SpinLock.Exit
public void Exit(bool