interlockeddecrement及interlockedincrement在linux gcc下实现

interlockeddecrement,interlockedincrement是windows提供的一套函数,保证变量的加减是原子操作,在多线程中可以用作同步信号,那么linux gcc上是否也提供了对应的函数呢?肯定是有的gcc提供了一整套原子操作:

type __sync_fetch_and_add (type *ptr, type value, ...)
type __sync_fetch_and_sub (type *ptr, type value, ...)
type __sync_fetch_and_or (type *ptr, type value, ...)
type __sync_fetch_and_and (type *ptr, type value, ...)
type __sync_fetch_and_xor (type *ptr, type value, ...)
type __sync_fetch_and_nand (type *ptr, type value, ...)


type __sync_add_and_fetch (type *ptr, type value, ...)
type __sync_sub_and_fetch (type *ptr, type value, ...)
type __sync_or_and_fetch (type *ptr, type value, ...)
type __sync_and_and_fetch (type *ptr, type value, ...)
type __sync_xor_and_fetch (type *ptr, type value, ...)
type __sync_nand_and_fetch (type *ptr, type value, ...)


其中type可以是如下类型:

int8_t / uint8_t
int16_t / uint16_t
int32_t / uint32_t
int64_t / uint64_t

Comments

Popular posts from this blog

socket close shutdown函数区别

批量在文件头插入

hash表取模技巧