2016-06-02 2 views
0

Работая над кросс-платформенным проектом, мне очень интересно использовать список ядра Linux.Ядро Linux list.h и MSVC

Несмотря на то, что реализация Linux-связанного списка (https://github.com/torvalds/linux/blob/master/include/linux/list.h) не содержит слишком много кода, мне было интересно, можно ли использовать его с другим компилятором, чем GCC.

В частности, Можно ли безопасно использовать список MSVC-компиляторов? Есть ли какая-то часть реализации, которая может с ней не справиться?

ответ

0

Внедрение двойного списка struct list_head является компилятором-агностиком и будет работать с любым совместимым с C89 компилятором как thread-unsafe.

С этой интерпретацией макрос WRITE_ONCE в INIT_LIST_HEAD реализация может быть закодирована как простое назначение. (Первоначально этот макрос использует volatile, которые не имеют четкой семантики в стандарте C для многопоточных программ).

Смежные вопросы