我的多核计算机正在接收数据包并在其核心之间均匀分布(排序循环)。每个核心应决定是否允许数据包通过或丢弃它,具体取决于其原始地址。
我需要找到无锁算法和数据结构来实现这一点。你能帮忙吗?
答案 0 :(得分:1)
如果您乐意使用Java,或者查看Java源代码的设计,您可以选择随机密钥,然后从http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html检索队列。给定队列,如果是http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html
,您可以将数据包添加到它而不会阻塞java.util.concurrent的大部分内容都归功于Doug Lea,他在http://gee.cs.oswego.edu/dl/concurrency-interest/index.html上有相关信息。
可能对您的特定问题有些过分,但可能会满足该领域数据结构信息的一般要求。