Linux 的内核 list.h 和 MSVC

Linux's kernel list.h and MSVC

从事跨平台项目,我对使用 linux 内核列表非常感兴趣。

尽管 Linux 双链表 (https://github.com/torvalds/linux/blob/master/include/linux/list.h) 的实现不涉及太多代码,但我想知道将它与 GCC 不同的编译器一起使用是否安全。

特别是,列表可以安全地用于MSVC编译器吗?实施中是否有任何部分可能无法使用它?

双链表的实现 struct list_head 与编译器无关,可以与任何 C89 兼容的编译器一起使用,如 thread-unsafe

使用 INIT_LIST_HEAD 中的解释宏 WRITE_ONCE 实现可以编码为简单赋值。 (最初,这个宏使用 volatile,它在多线程程序的 C 标准中没有明确定义的语义。