baidu / uid-generator

UniqueID generator
Apache License 2.0
5.46k stars 1.55k forks source link

为什么只有Tail、Cursor指针、Flag-RingBuffer中采用了CacheLine 补齐方式? #50

Closed csonezp closed 7 months ago

csonezp commented 4 years ago

UID-RingBuffer不需要吗?

yuzhaopeng commented 2 years ago

我理解是因为在并发获取uid的情况下,uid-RingBuffer 只读不写,但是 Flag-RingBuffer 是读写一起的,读完立马就写,如果不做CacheLine填充,就会出现相邻的两个flag 加载到同一个CacheLine中,两个线程同时写flag 出现竞争,然后影响并发性能