自旋锁
Melon中的自旋锁会根据不同编译器和不同CPU架构选用不同的实现。
本模块在MSVC环境中暂不支持。
头文件
#include "mln_utils.h"
#include "mln_types.h"
模块名
utils
函数/宏
如下函数中的lock_ptr
均为mln_spin_t
类型,该类型定义在mln_types.h
中。
mln_spin_init
mln_spin_init(lock_ptr)
描述:初始化锁lock_ptr
。
返回值:成功返回0
,否则返回非0
mln_spin_destroy
mln_spin_destroy(lock_ptr)
描述:销毁锁lock_ptr
。
返回值:成功返回0
,否则返回非0
mln_spin_trylock
mln_spin_trylock(lock_ptr)
描述:尝试锁定自旋锁。若锁资源被占用则会立即返回。
返回值:成功锁住则返回0
,否则返回非0
mln_spin_lock
mln_spin_lock(lock_ptr)
描述:锁定锁资源。若锁资源被占用,则等待其可用并将其锁定。
返回值:无
mln_spin_unlock
mln_spin_unlock(lock_ptr)
描述:释放锁。
返回值:无
示例
这里仅展示使用,暂不考虑示例单线程合理性。
#include "mln_utils.h"
#include "mln_types.h"
int main(int argc, char *argv[])
{
mln_spin_t lock;
mln_spin_init(&lock);
mln_spin_lock(&lock);
mln_spin_unlock(&lock);
mln_spin_destroy(&lock);
return 0;
}