案例 1 : 简单用法
atomic_int id;
atomic_fetch_add(&id, 1)
atomic_uint id;
atomic_fetch_add(&id, 1)
以上是两种原子自增简单非常常见用法. 但和业务联动时候存在潜在问题. 例如第一段代码中 atomic_fetch_add(&id, 1) 这种 id++
加到最后会溢出, 需要 看业务能否接受了. 第二种死板一点, 也是一样看业务取舍, 例如杂糅一些特殊业务值非常困难.
案例2: skynet 项目中 socket id 设计
https://github.com/cloudwu/skynet/blob/master/skynet-src/socket_server.c#L345-L371
static int