Linux系统编程中,在同步机制中,进程可以通过应用自旋锁来保持对某个资源的锁定,调用spinlock()来实现进程同步,,,这一过程中,进程 自旋锁 资源对象三者,自旋锁本质是一个变量,可不可以是系统中的一个部(组)件,就是为了达到进程同步而设计的?还是自旋锁属于每个资源的属性?即如果进程1对某个资源调用spinlock(spinlock_t *lock)加锁,这个入参是资源对象的所具有的属性,每个描述资源对象的结构体里面都有这样的一个成员?另
2)加完锁后,可不可以获得是哪个进程加锁的?锁的持有进程是哪个?
3)spinlock(spinlock_t *lock)“自旋”即进程获取锁若获取不到,即“自旋”等待不返回,而spin_trylock()尝试去获取spin lock,如果失败,不会spin,而是返回非零值,这与“自旋”是不是矛盾?
自旋锁是个系统变量,对自旋锁进行操作的API需要实现原子操作,多核系统上面还要做屏蔽
第二个,好像spinlock没有api获取当前等待队列的,因为spinlock锁定之后系统是不会调度出去的,不像mutex
第三个问题,这个只是对锁的一种叫法,事实上,很多时候程序里面用自旋锁获取一个资源也是尝试上锁几次,不能让进程一直卡死的