skynet源码学习(一) linux无锁化编程
  5J061crhTXqe 2023年11月02日 53 0

以下是skynet源码:

struct groupnode { int handle; struct skynetcontext ctx; struct groupnode next; };

struct group { int lock; struct groupnode node[HASHSIZE]; };

struct group G = NULL;

inline static void lock(struct group g) { while (synclocktestandset(&g->lock,1)) {} }

inline static void unlock(struct group g) { synclockrelease(&g->lock); }*

gcc从4.1.2开始提供了sync系列的build-in函数,用于提供加减和逻辑运算的原子操作 type synclocktestandset (type ptr, type value, …):将ptr设为value并返回ptr操作之前的值。 void synclockrelease (type ptr, …):将ptr置0。 type只能是int, long, long long以及对应的unsigned类型

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论