其他分享
首页 > 其他分享> > 围绕Win32的无锁SList有一个不错的C包装吗?

围绕Win32的无锁SList有一个不错的C包装吗?

作者:互联网

Windows提供了一个无锁的单链表,如本页所述:
Win32 SList

我想知道这个功能是否存在一个好的C包装器.当我说好的时候,我的意思是它尽可能地导出通常的STL接口,支持迭代器等.我宁愿使用别人的实现而不是坐下来编写STL类型的容器.

解决方法:

你可以使用boost和:: boost :: iterator_facade快速启动并运行.

不,它不是最佳的或可移植的,迭代器语义是你应该听到的Alexandrescou突然在DevCon反对.您没有锁定容器,而是锁定(并可能重新锁定和解锁)操作.并且锁定操作意味着串行执行,非常简单.有大量的迭代器操作会对创建的抽象造成不必要的惩罚.

从Mars视图来看,迭代器隐藏了指针,隐藏在一个半OO概念下,就像OO-vs-Distributed开发一样.我会使用’过程’接口来确保并使用户/维护者付费注意为什么有必要.无锁操作仅与围绕它的“所有并行代码”一样好.自1996年以来人们不断给予scoped_lock包装重新发明的经典例子,它产生漂亮的串行代码.

或者使用原子和Sutter的DDJ条目作为穷人前进方向的参考(以及之后超过10年的Pentium Pro无序性).

(所有真正发生的事情是,boost和DDJ是在不可变性之后运行的.net和MS CCR列车之后运行的,以及在为无锁开发提供良好的OO类似抽象之后运行的英特尔列车.问题是它不能做得好,有些人一次又一次地争吵;很像TBB的concurrent_vector无意义.同样的原因异常从来没有实现过无问题,特别是在整个环境中,以及为什么C中的矢量处理没有被C充分利用的原因相同编译器等等……)

标签:lock-free,c,windows,linked-list
来源: https://codeday.me/bug/20190726/1548093.html