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 标准中没有明确定义的语义。
从事跨平台项目,我对使用 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 标准中没有明确定义的语义。