Chinaunix
标题:
__sync_lock_test_and_set
[打印本页]
作者:
finyren
时间:
2014-11-19 13:06
标题:
__sync_lock_test_and_set
本帖最后由 finyren 于 2014-11-19 13:08 编辑
type __sync_lock_test_and_set (type *ptr, type value, ...)
将*ptr设为value并返回*ptr操作之前的值。
网上的解释如上,那这个函数名中的“test"有什么涵义了,在实际情况下怎么用了?
网上有段开源代码是这么用的:
static inline void lkf_node_put(struct lkf_list* list, struct lkf_node* node)
{
struct lkf_node** ptr = __sync_lock_test_and_set(&(list->tail), &(node->next));
*ptr = node;
}
意识就是将node插入链表的尾端,这是怎么实现的?
作者:
folklore
时间:
2014-11-19 13:33
就是多线程/多进程的原子操作, Google原子操作
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2