我有多个线程处理事件。我想为每个事件分配一个纳秒级时间戳。这必须是唯一的ID。因此,在两个事件到达并被分配相同的时间戳的奇怪情况下,我希望其中一个事件时间戳增加一纳秒。考虑到实际精确度不在纳秒级别,就系统时间戳性质而言,这是可以接受的。
在一个线程中,这是一个微不足道的问题。但跨越多个线程,它变得更具挑战性。性能绝对至关重要,因此像典型的ID生成器之类的简单同步思路似乎会阻塞太多。
是否有一些方法可以在最小或没有锁定的情况下解决这个问题?
在一个线程中,这是一个微不足道的问题。但跨越多个线程,它变得更具挑战性。性能绝对至关重要,因此像典型的ID生成器之类的简单同步思路似乎会阻塞太多。
是否有一些方法可以在最小或没有锁定的情况下解决这个问题?
Unique
是基于一个原子增加的Integer
,所以是的。(尽管从技术上讲,你只能得到一个Int
,所以只有Eq
和Ord
实例可以区分前后环绕的值,但在64位机器上这不会成为问题。) - ehird